viまたはVimで一致するすべての行を表示/非表示にすることは可能ですか? ハイライトではなく、それらの行のみを表示します。
たとえば、 word the word というテキストがありますERROR
。ERROR
を含む行のみを表示し、含まない行のみを表示するにはどうすればよいERROR
ですか?
一致する行をすべて削除してから元に戻すだけの解決策はありますか?
:global
コマンドについて知っていますか?これはあなたが望むことをしますか?
:g/ERROR
反対の場合:
:g!/Error
または同等:
:v/Error
ユースケースに応じた別のアプローチは、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 : 所定のパターンに一致しない行を折りたたむ
たまたま使用する場合は、次を使用fzf
できます。
:Lines
開いているすべてのファイルで:BLines
開いているバッファのみ:Rg [pattern]
使用してripgrep
おそらく、/pattern/ を含む行を表示する less vi vim & /pattern/ のコマンドを意味します (grep のように)。