: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