1

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

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

4

1 回答 1

2

你缺少一个<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>

这用于|分隔命令并转义%. 仅在文件名包含特殊字符的情况下,转义%导致更强大的映射。

帮助:h execute:h shellescape

于 2013-06-17T02:25:20.073 回答