web-dev-qa-db-ja.com

VIMからgrepを使用する場合、結果にジャンプする方法は?

VIMにgrepプラグインを使用すると、次のように、ファイルのセット内の文字列のすべての出現を現在のディレクトリで検索できます。

:grep Ryan *.txt

これは次のようなものを出力します:

file1.txt:3:Ryan was here
file2.txt:10:Ryan likes VIM
file3.txt:5:superuser.com is a fav of Ryan
(1 of 3): Ryan was here
Press ENTER or type command to continue

Enterキーを押すと、エディターに戻るだけです。私が本当にやりたいことは、それらのファイルの1つを開いて、文字列が見つかった場所にジャンプできるようにすることです。これを行う方法はありますか? 1 of 3一部では、結果をタブで移動する方法があると思いますが、使用できるコマンドがわかりません。誰かがこれに光を当てることができますか?

33
Marplesoft

Enterキーを押すと、file1.txtの3行目が表示されているはずです。次の一致にジャンプするには、:cn;を実行します。前の一致にジャンプするには、:cpを実行します。 :copenを実行すると、一致のリストを含むウィンドウが開きます。カーソルを目的の一致に移動し、Enterキーを押してその一致にジャンプします。

:grepの使用の詳細については、

:help grep
:help quickfix.txt

:cn:cpを入力してクイックフィックスリスト内を前後に移動するのは面倒な場合があるため、以下のマッピングを使用します。

nmap <silent> <C-N> :cn<CR>zv
nmap <silent> <C-P> :cp<CR>zv

また、:grepコマンドはプラグインではありません。 Vimの一部です。

34
garyjohn