vim:このようなコマンドをパイプする方法は?

vim:このようなコマンドをパイプする方法は?

テキストファイルがあります。

value #value2
 value2 #value3
...

-fでソートし、#の前に2つのタブを追加したいので、これをしました。

:'<,'>norm f#i^I^I |!sort -f

しかし、私に悪い結果を与える! 2つの別々のコマンドを使用する解決策を知っています。

:'<,'>norm f#i^I^I^I
:'<,'>!sort -f

しかし、問題は、このコマンドをパイプで接続できるかどうかです。

ベストアンサー1

ちょっと探して:help :normalみるとわかるよ

"|"はコマンドの一部と見なされるため、このコマンドの後に他のコマンドは続くことはできません。

また、これは|パイプラインではありません。これはコマンドを「接続」する唯一の方法です。 2つのシェルコマンドを;。したがって、1 つのコマンドに適用される範囲は、後続のコマンドには適用されません。

カスタム機能や同様の機能を含まない最も近い選択肢は、次の方法を使用し:substituteて範囲を再指定することです。

:'<,'>s/#/\t\t\t#/ | '<,'> !sort -f

おすすめ記事