web-dev-qa-db-ja.com

コマンドにパイプ文字が含まれています-vimが「エディターコマンドではない」と言っているのはなぜですか?

いくつかのコマンドをvimのショートカットにマップしようとしています。具体的には、色付きのgitdiffを取得しようとしています。このコマンドを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を呼び出すと、それも役に立ちません。何が得られますか?

3
Alison R.

(OK、ここにあります-\|についてはよくわかりませんでした)

\|の代わりに|を試してください。

ただし、代わりに、vimdiffモードと、CVSmenuなどのプラグインがどのように進行するかを確認する必要があります。ところで、IIRCには、gitをvimに統合する(おそらくいくつかの)プラグインがすでに存在します。

9
Luc Hermitte

Lucの答えに追加すると、これは|がvimのコマンド区切り文字であり、bashの;と同様であるためです。

6
Daenyth