[英]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.