vim グローバルコマンドは最初にのみ表示されます。

vim グローバルコマンドは最初にのみ表示されます。

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」を検索してください。

引用:

おすすめ記事