牢獄機械文書群 目次 » 計算機 » 現在地
Vimgrep で検索結果にジャンプしない
2011-09-14 05:36

vimgrep は vim が標準にそなえる grep (文字列検索)機能。

Windows には grep が標準にないので( find はあるが)重宝する。 僕の環境では Borland C++ Compiler に付属の grep.exe もあるが、vimgrep の場合は、検索にヒットした最初のファイルに自動的にジャンプするなど独自の機能を持っている。

ジャンプしたくない場合は vimgrep の flag によって制御できる。


vimgrep の Usage は help によれば以下のよう。

:vim[grep][!] /{pattern}/[g][j] {file}

この [g][j] の flag のうち、g を付加すると、一つのファイルに検索文字列が複数ヒットした場合に複数件として表示する。 j を付加すると、最初にヒットしたファイルへのジャンプをしない。

ついでに、:cw で検索結果を表示するので、たとえば

:vimgrep /{pattern}/gj {file}|cw

というように予め指定しておけば楽。

蛇足かもしれないが、たとえば以下のようにできる。

com! -nargs=+ Vimgrep call VimgrepMod(<f-args>)

function! VimgrepMod(...)
    if len(a:000) < 1 || len(a:000) > 2
        echo 'Error: verify argument'
        return 0
    elseif len(a:000) == 1
        let files = '*'
    else
        let files = a:2
    endif
    execute 'vimgrep /' .a:1 .'/gj ' .files .'|cw'
    return 1
endfunction

以上の場合、

:Vimgrep foobar *.txt

のように、第1引数に検索する文字列、第2引数に検索対象のファイルを指定すればよい。それぞれ vimgrep の {pattern} と {file} に置き換えられる。

第2引数を省略した場合は検索対象は '*' (すべてのファイル)となる。

« もどる
inserted by FC2 system