命令包含管道字符 - 为什么 vim 说“不是编辑器命令”?

Ali*_* R. 3 vim vimrc

我正在尝试将一些命令映射到 vim 中的快捷方式。具体来说,我正在尝试获得一个彩色的 git diff。如果我在 Ex 模式下键入此命令,它会按预期工作:

:! git diff --staged % | colordiff | less -R

但是如果我尝试在我的 .vmirc 中映射它,

map ,gds :! git diff --staged % | colordiff | less -R<CR>

我收到错误:

E492: Not an editor command: colordiff | less -R<CR>

我有其他使用管道的映射命令就好了,所以这似乎不会导致问题。如果我通过完整路径调用 colordiff,它也无济于事。是什么赋予了?

Luc*_*tte 9

(好吧,这是 - 我不确定\|

尝试\|代替|.

但是你应该看看 vimdiff 模式,以及像 CVSmenu 这样的插件是如何进行的。顺便说一句,IIRC 已经存在一个(可能有几个)插件将 git 集成到 vim 中。


Dae*_*yth 6

要补充 Luc 的答案,这是因为|是 vim 中的命令分隔符,类似于;bash