既知の行の最初のインスタンスを除くすべてを削除する方法は?
たとえば、私は
LOADING CONDITION : LIGHTSHIP CONDITION
これらのいくつかは、ファイルのコンテンツ全体に広がっています。一番上にある最初のインスタンスだけを保持したいと思います。
アイデアはありますか?
:global
このコマンドは範囲と組み合わせて使用できます。
:0/LOADING CONDITION/+,$g//d
説明:
[range]g/{pat}/{cmd}
与えられた行範囲 内で{cmd}
一致するすべての行で、コマンド を実行します。{pat}
[range]
0/LOADING CONDITION/
最初の行から始めて、パターンを見つけますLOADING CONDITION
0/LOADING CONDITION/+1
最初のインスタンスの 1 行下の範囲を開始します+1
+
1が想定できるという理由だけで、に短縮できます。,$
範囲の終わりは、次のように参照されるファイルの最後の行になります。$
g//
最後の検索パターンを使用します。この場合、範囲からのパターン:delete
または:d
略して、行を削除するために使用されるexコマンドです詳細については、
:h :g
:h :d
:h range
gg (make cursor back to top)
/LOADING CONDITION : LIGHTSHIP CONDITION (enter)
n
:.,$g//d
私のPatternsOnText プラグインは、これを非常に簡単にするコマンド (およびその他の関連コマンド) を提供します。
:DeleteDuplicateLinesOf /^LOADING CONDITION : LIGHTSHIP CONDITION$/