Vimには、Grep機能を統合して実装するいくつかのコマンドがあります( :help grep
参照)。 2つの主要なものは:grep
と:vimgrep
です。前者の は外部Grepプログラム(grepprg
オプションで設定)を使用し、後者は コアGrep機能をVim自体で実装しています。
:vimgrep
の主な利点は、**
globワイルドカードを含むVim regexの構文と 移植性です。 :vimgrep
コマンド は、拡張グロブパターンのサブセットを認識します(:help wildcard
を参照)。この は、ほとんどの場合、find
コマンドを避けることができます。 :vimgrep
を使用すると、 の例の検索は次のようになります。お使いのシェルまたは grepprg
が**
ワイルドカードを実装している場合
:vimgrep /something/ **/*
同じ検索は、:grep
コマンドを実行することができます。以下は、Zsh 拡張グロブ記法を示す例です。
:grep 'something' **/*(.)
これらのコマンド(およびその変種)の両方
はQuickFixリストとそのウィンドウローカルバージョン、場所のリスト(
:help quickfix
を参照)と呼ばれるVimのインタフェース機能 を利用しています。 QuickFixウィンドウは、1つまたは複数のファイルに関する 種類の検索結果を含む特別な読み取り専用バッファです。検索結果Grepコマンドで収集された はすぐにQuickFixウィンドウに集約されます。
QuickFixリストは によって単一の行を検索パターンの各マッチング位置を表し、かつ迅速にこれらのラインにを入力 を押してそれらを切り替えることを可能にします。 QuickFixリストに関連するコマンドはほとんどありません。ここでは、それらの一部だけを出発点としてリストします(詳細はヘルプ を参照してください)。
:cw
か:cope
は(それらの間の 違いを理解するのに役立つ参照)のQuickFixウィンドウを開きます。
:cc
,:cn
,:cp
はそれぞれ現在の、次の、そして前の の一致をリストに表示します。
:cr
,:cla
リスト内の最初の一致と最後の一致をそれぞれ に表示します。
:ccl
は、QuickFixウィンドウを閉じます。
ロケーションリストは、特定のウィンドウに添付されたQuickFixリストです。各ウィンドウ には、(ウィンドウのロケーションリストとQuickFixリストの他の から独立した)単一のロケーションリストを接続することができます。上記リストに記載されているQuickFixのリストコマンド には、ロケーションリストと同等の機能があります。
:lw
- または
:lop
現在 ウィンドウに関連付けられているロケーションリストを開きます。
:ll
:lne
:lp
現在、次、および前の の一致がリストにそれぞれ表示されます。
:lr
、:lla
リスト内の最初と最後の一致をそれぞれ に表示します。
:lcl
は、ロケーションリストを閉じます。 :grep
と:vimgrep
コマンドの
場所のリストの対応は、それぞれ:lgrep
と:lvimgrep
、です。
どのようにファイルを順番にナビゲートしますか? –
詳細な応答をありがとう。とても有難い!私はグーグルでマニュアルを見て回ったが、それはこれにつながることはなかった。ありがとうございました。 –
@Senthil:ほとんどの場合、 ':cn'、':cp'コマンド、またはQuickFixリスト自体を使って、大抵はマッチの間を行き来するでしょう。 –