我想更新文件(如有必要)并在当前文件上运行系统命令

时间:2013-06-17 01:53:42

标签: vim

我意识到我可以:nmap <leader>rc :!cat %<CR>提供一套简单的触发器,但我想这样做。

nmap <leader>rc :up :!cat %<CR>但它抱怨只需要一个文件名。如何使vim能够连续识别这两个命令?

1 个答案:

答案 0 :(得分:2)

<CR>之后您遗漏了:up<CR>告诉vim你想在这里回车。

nmap <leader>rc :up<CR> :!cat %<CR>

向上抱怨多个文件名的原因是它将:!cat%<CR>视为两个参数。

所以新宏执行

:up
:!cat %

而不是

:up :!cat %

(旁注:您应该使用nnoremap而不是nmap)


ZyX建议使用以下映射。

nnoremap ,rc :up\|execute "!cat" shellescape(@%, 1)<CR>

这使用|分隔命令并转义%。转义%会导致更强大的映射,只是文件名包含特殊字符。

:h execute:h shellescape

的帮助