89

viまたはVimで一致するすべての行を表示/非表示にすることは可能ですか? ハイライトではなく、それらの行のみを表示します。

たとえば、 word the word というテキストがありますERRORERRORを含む行のみを表示し、含まない行のみを表示するにはどうすればよいERRORですか?

一致する行をすべて削除してから元に戻すだけの解決策はありますか?

4

8 に答える 8

112

:globalコマンドについて知っていますか?これはあなたが望むことをしますか?

:g/ERROR

反対の場合:

:g!/Error

または同等:

:v/Error
于 2009-05-14T12:14:37.027 に答える
54

ユースケースに応じた別のアプローチは、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ます。

于 2012-09-18T23:26:43.267 に答える
39

使用できます

:g/ERROR/

すべての行を ERROR で印刷するには

また、私が何度も見たが使用しなかった Vim プラグインもあります: foldsearch : 所定のパターンに一致しない行を折りたたむ

于 2009-05-14T12:13:18.170 に答える
2

たまたま使用する場合は、次を使用fzfできます。

  • :Lines開いているすべてのファイルで
  • :BLines開いているバッファのみ
  • :Rg [pattern]使用してripgrep
于 2019-07-24T12:01:16.157 に答える
0

おそらく、/pattern/ を含む行を表示する less vi vim & /pattern/ のコマンドを意味します (grep のように)。

于 2015-05-28T07:26:45.803 に答える