複数のコマンドを実行するためにvimでコマンドを作成する方法は?

複数のコマンドを実行するためにvimでコマンドを作成する方法は?

私は以下を私のファイルに入れて、一般的な.vimrc機能を実行するいくつかのコマンドを書きました。

command! FixWhitespace %s/ \+$//g
command! FixCommas %s/,\S\@=/, /g

この2つのコマンドを実行する3番目のコマンドを生成しようとしていますが、次のコマンドは機能しません。

command! Fix FixWhitespace|FixCommas

:Fix内部で実行すると、vim次のメッセージが表示されます。

E488: 末尾の文字: FixWhitespace|FixCommas

このエラーメッセージが私がしていることとどんな関係があるのか​​よくわかりませんが、明らかに何かを正しくしていないようです!

私はVim 7.4を使用しています。

答え1

command! -barあるコマンドの後にパイプシンボルを持つ別のコマンドが続く可能性があることをvimに知らせる必要があります|

command! -bar FixWhitespace %s/\s\+$//e
command! FixCommas %s/,\S\@=/, /ge

今動作します。

command! Fix FixWhitespace|FixCommas

しかし、これはそうではありません:

command! Fix FixCommas|FixWhitespace

:h command-bar詳しくはこちらをご覧ください。

エラーメッセージは、E488: Trailing characters: FixWhitespace|FixCommasvimがFixWhitespaceコマンドに従うことを期待していないことを知らせる方法です。望むより:h E488


ただし、パターンは1行に最大1回しか一致できないため、コマンドには対応するFixWhitespaceフラグは必要ありません。gまた、迷惑なエラーメッセージを表示しないようにフラグを設定しましたe。望むより:h s_flags

関連情報