vimで:grepおよび:vimgrepを使用する場合


16

vim :makeでは、エラーの構築と修正が簡単になり:grep、の:vimgrepように動作し:makeます。しかし、なぜこれらの2つのコマンドが必要なのでしょうか?パターンを検索してを押してみnませんか?単に検索するよりも優れているのは何ですか?

回答:


16

ドキュメントが言うように:

Vim has two ways to find matches for a pattern: Internal and external.

一言で言えば、:vimgrepVimのgrepメカニズムを使用してファイルを読み取り、検索します。:grep外部コマンドを使用して同じジョブを実現します。

/検索は一方で、カレントバッファだけのためである:[vim]grepあなたが一度にプロジェクト全体で検索できるように、ファイルのパターンを介して検索。

見て:h grepより多くの情報のため。


4

/?現在のバッファのみを検索しますが:grep:vimgrep引数として任意のファイル/パターン/グロブを使用します。


4

利点の1つ:[vim]grep以上は、/?(あなたが使用している場合やロケーションリスト結果はQuickFixリストに入れてしまうことがあり:l[vim]grep、)あなたが使用してすべてのマッチのリストをプルアップすることができますことは、この意味:cl。次に、番号を使用して、リストから目的の結果に直接移動できます。

また:[vim]grep pattern %、コードベース全体を検索するのと同じコマンドを使用して、現在のバッファを検索できるため、:[vim]grep pattern path対称性が向上します。

さらに、Silver Surfer / Ripgrepを使用して、非常に強力な検索を行うことができます。これらは:[vim]grepコマンドにマッピングできます。


0

私が見る3つの主な利点があります

  1. 一貫したregexエンジン/構文を使用を使用:grep/vimgrepするとgrepprggrep/ack/agなどを定義できるを定義できます。これを使用すると、一貫したregexエンジンを使用して現在のバッファーまたは複数のバッファー/ファイルを検索できます。一方、vimの/patternオプションを使用すると、vimのデフォルトの正規表現エンジンに固執しextended regular expressionます。これは、構文と比較して構文が異なります。だから、あなたが表現を検索する必要がいつでも、あなたは/あなたが使用する必要があるかどうか覚えて考える必要があるだろう\)か、単に)と他の違い。これは非常に迷惑です(/programming/3864467/whats-the-difference-between-vim-regex-and-normal-regex

  2. vimgrepは、quickfix / locationリストを作成:grep/vimgrepます:を使用すると、検索リストを作成できます。(https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d)。

    ロケーションリストを使用する場合、]qTim-Popesの無害なプラグイン(https://github.com/tpope/vim-unimpaired)がある場合、ショートカットを使用してナビゲートできます

  3. vim内での複雑な検索:通常、複雑な検索を行う必要がある場合は、コマンドラインを使用する必要があります。ただし、greprg適切に定義し、[1]などのコマンドを使用する場合

    :vim / pattern1 / find . -type f

    非常に複雑な検索を実行し、location listまたはで検索結果を表示できますquickfix list

[1] http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.