在 vim ex 模式下,@% 是做什么的?
In vim ex mode, what does @% do?
我正在写一些 vim 领导者映射来将(GitHub 风味降价)中的文件转换为 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('%')
替换了它,我 "get" 多了一点。
任何人都可以解释其中的区别,甚至可以去哪里查找吗?我确实读过 :help :@
,但它谈到了 Execute the contents of register as an ex command
,似乎 不是这里发生的事情。
任何帮助/指点都会很棒!
@%
是一个寄存器,其中包含与当前缓冲区关联的文件的名称。它可以像任何其他寄存器一样使用,例如:
i<C-r>%
"%p
在您的第一个示例中,shellescape()
需要一个字符串作为其第一个参数并输出一个字符串。恰好@%
的类型是String所以@%
可以直接使用
我正在写一些 vim 领导者映射来将(GitHub 风味降价)中的文件转换为 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('%')
替换了它,我 "get" 多了一点。
任何人都可以解释其中的区别,甚至可以去哪里查找吗?我确实读过 :help :@
,但它谈到了 Execute the contents of register as an ex command
,似乎 不是这里发生的事情。
任何帮助/指点都会很棒!
@%
是一个寄存器,其中包含与当前缓冲区关联的文件的名称。它可以像任何其他寄存器一样使用,例如:
i<C-r>%
"%p
在您的第一个示例中,shellescape()
需要一个字符串作为其第一个参数并输出一个字符串。恰好@%
的类型是String所以@%
可以直接使用