viまたはVimで一致するすべての行を表示/非表示にすることは可能ですか?ハイライトせず、それらの行のみを表示します。
たとえば、単語が単語であるテキストがありますERROR
。含むERROR
行のみを表示する方法と、含まない行のみを表示する方法を教えてくださいERROR
。
一致するすべての行を削除してから元に戻すことなく解決策はありますか?
回答:
:global
コマンドについて知っていますか?これはあなたが望むことをしますか?
:g/ERROR
反対の場合:
:g!/Error
または同等に:
:v/Error
g<
もう一度確認するか@:
、実行してコマンドを実行していない場合。
ユースケースに応じた別のアプローチは、vimgrepとその結果をquickfixで使用することです。次のことができます。
:vimgrep pattern %
現在のファイルを検索し、最初の検索結果に移動します。さらに重要なのは、結果を「クイックフィックスリスト」に入れることです。
:copen
次に、別のクイックフィックスウィンドウでクイックフィックスリストを開きます。したがって、最後のvimgrepのすべての行を含む別のウィンドウが表示されます。クイックフィックスウィンドウ内で、Enterキーを押すか、行をダブルクリックして、元のファイルの対応する行にジャンプできます。
:colder
古いクイックフィックスリスト(古いvimgrepの結果)に戻ることができます。そして:cnewer
、新しい検索結果に進みます。
クイックフィックスリストは実行時にも更新されることに注意してください:make
(これが、エラーを修正するためにクイックフィックスと呼ばれる理由です)。このため、「ロケーションリスト」と呼ばれるクイックフィックスリストの代替手段もあります。代わりにあなたが使用し、それを使用するには:lvimgrep
、その後、C-接頭辞のコマンドではなく、L-接頭辞のコマンドを使用- 、:lopen
、。:lolder
:lnewer
もちろん、できることはもっとたくさんあります。詳細については:help quickfix
、を参照してください。
PS、あなたは行を削除してから元に戻すアプローチは必要ないとおっしゃいました。しかし、あなたg/ERROR
が答えとしてマークしたので、私は迅速で汚い方法を指摘するだろうと思いましたg!/ERROR/d
。その後、を使用して簡単に元に戻すことができu
ます。また、参考までに、コマンドに:set hlsearch
一致するパターンを強調表示するために行うことができ:g
ます。
使用できます
:g/ERROR/
ERRORですべての行を印刷するには
また、私が何度も見たが使用しなかったVimプラグインがあります: foldsearch:特定のパターンに一致しない行を折りたたむ
これを行うための最良の方法は->
:vimgrep /something/g % | copen
これにより、キーワードに一致するリストが開き、クイックフィックスウィンドウに一致した行のみが表示されます。
現在のファイルを考慮しない場合は、%をファイルへのパスに置き換えます。