3

既知の行の最初のインスタンスを除くすべてを削除する方法は?

たとえば、私は

LOADING CONDITION :   LIGHTSHIP CONDITION

これらのいくつかは、ファイルのコンテンツ全体に広がっています。一番上にある最初のインスタンスだけを保持したいと思います。

アイデアはありますか?

4

3 に答える 3

8

: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
于 2013-02-21T14:52:44.897 に答える
2
gg (make cursor back to top)
/LOADING CONDITION :   LIGHTSHIP CONDITION (enter)
n
:.,$g//d   
于 2013-02-21T11:55:42.330 に答える
1

私のPatternsOnText プラグインは、これを非常に簡単にするコマンド (およびその他の関連コマンド) を提供します。

:DeleteDuplicateLinesOf /^LOADING CONDITION :   LIGHTSHIP CONDITION$/
于 2013-05-29T15:51:35.183 に答える