我意识到我可以:nmap <leader>rc :!cat %<CR>
提供一组简单的触发器,但我想这样做。
nmap <leader>rc :up :!cat %<CR>
但它抱怨只需要一个文件名。如何让 vim 连续识别这两个命令?
我意识到我可以:nmap <leader>rc :!cat %<CR>
提供一组简单的触发器,但我想这样做。
nmap <leader>rc :up :!cat %<CR>
但它抱怨只需要一个文件名。如何让 vim 连续识别这两个命令?
你缺少一个<CR>
after :up
。<CR>
告诉 vim 你想在这里回车。
nmap <leader>rc :up<CR> :!cat %<CR>
up 抱怨多个文件名的原因是它认为:!cat
和%<CR>
作为 up 的两个参数。
所以新的宏执行
:up
:!cat %
代替
:up :!cat %
(旁注:您可能应该使用 nnoremap 而不是 nmap)
ZyX 建议改用以下映射。
nnoremap ,rc :up\|execute "!cat" shellescape(@%, 1)<CR>
这用于|
分隔命令并转义%
. 仅在文件名包含特殊字符的情况下,转义%
导致更强大的映射。