vimで:gコマンドを使用して検索結果の最初の項目だけを一致させることができるかどうか疑問に思います。
次の内容を含むファイルがあります。
Match 01
stuff 01
stuff 02
stuff 03
Match 01
stuff 01
stuff 02
stuff 03
Match 02
stuff 01
stuff 02
stuff 03
Match 02
stuff 01
stuff 02
stuff 03
Match 03
stuff 01
stuff 02
stuff 03
Match 03
stuff 01
stuff 02
stuff 03
データを抽出するには、次のコマンドを実行しようとします。
:g/Match 02/.,$w! /tmp/TESTING.txt
したがって、グローバルコマンドを使用して、現在の行から文書の終わりまで/tmp/TESTING.txtに書き込みます。
しかし、現在の行は常に一致の最後の項目なので、最終的に
Match 02
stuff 01
stuff 02
stuff 03
Match 03
stuff 01
stuff 02
stuff 03
Match 03
stuff 01
stuff 02
stuff 03
変える
Match 02
stuff 01
stuff 02
stuff 03
Match 02
stuff 01
stuff 02
stuff 03
Match 03
stuff 01
stuff 02
stuff 03
Match 03
stuff 01
stuff 02
stuff 03
これが私が望むものです。グローバルコマンドが一致する最初のエントリにのみ移動するようにしてこの問題を解決できるかどうか疑問に思います。
ベストアンサー1
問題は、カーソルが最初の一致の下にあるようです。私の提案は、vimにカーソルを1行に移動してから範囲/書き込みを実行するように指示することです。
:1 | /Match 02/,$w! /tmp/TESTING.txt
ファイルにスコープを書きたいと思い、スコープは次のように定義されているため、ピリオドを削除しました。~から$
ファイルの最後まで「Match 02」を検索してください。
引用: