既知の行の最初のインスタンスを除くすべてを削除する方法は?
たとえば、私は
LOADING CONDITION : LIGHTSHIP CONDITION
これらのいくつかは、ファイルのコンテンツ全体に広がっています。一番上にある最初のインスタンスだけを保持したいと思います。
アイデアはありますか?
:globalこのコマンドは範囲と組み合わせて使用できます。
:0/LOADING CONDITION/+,$g//d
説明:
[range]g/{pat}/{cmd}与えられた行範囲 内で{cmd}一致するすべての行で、コマンド を実行します。{pat}[range]0/LOADING CONDITION/最初の行から始めて、パターンを見つけますLOADING CONDITION0/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$/