繁体   English   中英

在vim ex模式下,@%做什么?

[英]In vim ex mode, what does @% do?

我正在编写一些vim领导者映射,以将(GitHub风格的markdown)中的文件转换为pdf。

这两种方法都起作用,并且在功能上似乎是等效的:

nnoremap <expr> <leader>pdf ':! pandoc -f markdown_github --latex-engine=xelatex ' . shellescape(@%,1). ' -o ' . shellescape(expand('%:r'), 1) . ".pdf \<cr>"

nnoremap <expr> <leader>pdf ':! pandoc -f markdown_github --latex-engine=xelatex ' . shellescape(expand('%'),1). ' -o ' . shellescape(expand('%:r'), 1) . ".pdf \<cr>"

我有第一个工作(感谢Stack Overflow;),但是我对第一个shellescape中的@%不太了解。 因此,我用expand('%')代替了它,然后expand('%')又”得到了一点。

谁能解释其中的区别,甚至可以去哪里查找? 我看过:help :@但是谈到Execute the contents of register as an ex command ,其中, 似乎并没有被这里发生了什么。

任何帮助/指针都将很棒!

@%是一个寄存器,其中包含与当前缓冲区关联的文件的名称。 可以像其他任何寄存器一样使用它,例如:

i<C-r>%
"%p

在您的第一个示例中, shellescape()期望将String作为其第一个参数并输出一个String。 发生这种情况是因为@%的类型是String,所以@%可以直接使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM