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

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

我正在尝试将一些命令映射到 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,也无济于事。这是怎么回事?

答案1

(好的,就是这个——我不确定\|

尝试\|代替|

但是你应该看看 vimdiff 模式,以及 CVSmenu 等插件是如何运行的。顺便说一句,如果我没记错的话,已经有一个(可能还有好几个)插件将 git 集成到 vim 中。

答案2

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

相关内容