:grep/ :vimgrepどちらもクイックフィックスリストを使用して場所を保存します。お気づきのとおり、vimは自動的に最初のオカレンスにジャンプします(!この動作を回避するために使用)。を使用:cnextして、クイックフィックスリストの次の場所に移動します。
Quickfixコマンド
:cnext/ :cpreviousクイックフィックスリストでクイックフィックスを前後にナビゲートする
:cfirst/ :clastクイックフィックスリストの最初と最後にジャンプする
:copenクイックフィックスウィンドウを開くために使用します。<cr>エントリにジャンプするために使用します
:ccloseクイックフィックスウィンドウを閉じるために使用します
:cc現在のエラーを表示するために使用します。
:colder/ :cnewer古い/新しいクイックフィックスリストにジャンプする
私はあなたのためのマッピングを作成することをお勧めします:cnextと:cprevious。私は個人的に使用unimpaired.vim提供する]qと[qのマッピング:cnextと:cprevious。
クイックフィックスウィンドウを自動的に開く場合は、以下をに追加しますvimrc。
augroup autoquickfix
autocmd!
autocmd QuickFixCmdPost [^l]* cwindow
autocmd QuickFixCmdPost l* lwindow
augroup END
このトピックについてのVimcastsエピソードがあります::vimgrepで複数のファイルを検索してください。
プロジェクト全体の検索と置換
使用している場合は:grep/を:vimgrep行うための方法として、プロジェクト全体の検索をし、置き換え、その後私はあなたが使用することをお勧め:cdo/ :cfdo(Vimの7.4.980+で)。
:grep 'foo'
:cfdo %s/foo/bar/g|w
Vimのバージョンに:cdo/ がない場合:cfdoは、次のコマンドをvimrcファイルに入れて、:Cdo/の:Cfdo代替コマンドを提供します。
if !exists(':cdo')
command! -nargs=1 -complete=command Cdo try | sil cfirst |
\ while 1 | exec <q-args> | sil cn | endwhile |
\ catch /^Vim\%((\a\+)\)\=:E\%(553\|42\):/ |
\ endtry
command! -nargs=1 -complete=command Cfdo try | sil cfirst |
\ while 1 | exec <q-args> | sil cnf | endwhile |
\ catch /^Vim\%((\a\+)\)\=:E\%(553\|42\):/ |
\ endtry
endif
代替プログラムを使用する :grep
場合によってgrepは、検索のニーズに対して十分ではありません。設定:grepからプログラムを変更できます'grepprg'(変更する必要がある場合もあり'grepformat'ます)。個人的には、ripgrepを使用して、のマニュアルページのvimrc指示に従って、ファイルに以下を追加しrgます。
set grepprg=rg\ --vimgrep
set grepformat^=%f:%l:%c:%m
注:「スマートケース」検索(すべて小文字の場合は大文字と小文字を区別しない検索)を使用する場合-Sなどset grepprg=rg\ -S\ --vimgrep、フラグを使用することができます。
今度:grepはrg検索に使用します。例えば:grep foo -t js。
彼女は調査するいくつかの代替grepプログラムです:ack、ag、ripgrep、およびgit grep(Fugitive.vimは:Ggrepラッパーを提供します)
詳細については、以下を参照してください。
:h :grep
:h 'grepprg'
:h quickfix
:h :cnext
:h :copen
:h :ccl
:h :cc
:h :colder
:h :cdo
:h :cfdo