2

バックグラウンド:

vim(Exモード)では、外部コマンドを実行して、そのコマンドからの出力を現在のバッファーに自動的に挿入することができます。

例001では、現在のディレクトリにcdして、そこにあるファイルのリストを取得し、それを現在のバッファに自動挿入する方法を示しています。

例001:

    :cd . | :r ! dir /w/s/b

質問:

1)ファイルに最近挿入された行を反映するためにVim {range}を自動的に指定またはキャプチャすることは可能ですか?

2)質問1)で取得した範囲を使用して、Exモードコマンドをチェーンして、ファイルに挿入された行を自動的に処理することは可能ですか?

3)上記の1)または2)を実行できない場合、Vimが最近バッファに挿入された行を認識し、それらに対して任意のコマンドを実行する別の方法はありますか?

4)この目的に使用できる関連する:help相互参照とは何ですか?

ゴール:

目標は、複数のExモードコマンドをチェーンして、ファイルに最近追加された行を簡単に実行できるようにすることです。行番号を明示的に識別したり、ビジュアルモードなどを使用して手動で選択したりする必要はありません。

目標は、例002の(疑似コード)と同様のことを行うことです。

例002:

    :cd . | :r ! dir /w/s/b | :{auto-range}s/^/    /
4

2 に答える 2

2

Vim は変更記号'[']を挿入範囲に設定します。これらを使用して、後続の Ex コマンドの範囲を定義できます。

:cd . | execute 'r ! dir /w/s/b' | '[,']s/^/    /

:executeそうしないと、 がコマンド|に属していると解釈されるため、必要です。:r

于 2012-08-24T07:16:02.630 に答える
1

これらの行を Vim に挿入する前に処理するのはどうですか?

:r!dir /w/s/b | sed -e "s/^/    /"
于 2012-08-23T21:44:14.263 に答える