とても頭の悪そうなタイトルですが、やりたいことは書いてあるとおりです。
※注意:Vimと書いてますが基本NeoVimでしか確認してないです。
参考にした記事
ほぼ書いてあるまんまです。
qiita.com
vimgrep hoge **/*.* | cw
のときみたいに、Quickfixっぽい感じで表示したり、
grepにマッチした箇所を順番に巡ったりしたい。
agにする
grep
じゃなくて ag
を使うように設定します。ag
使ったこと無いけど……
call denite#custom#var('file_rec', 'command', ['ag', '--follow', '--nocolor', '--nogroup', '-g', ''])
call denite#custom#var('grep', 'command', ['ag'])
call denite#custom#var('grep', 'recursive_opts', [])
call denite#custom#var('grep', 'pattern_opt', [])
call denite#custom#var('grep', 'default_opts', ['--follow', '--no-group', '--no-color'])
:Denite grep と :Denite -resume のショートカットを作る
:Denite grep -buffer-name=hoge
:grep結果のバッファに名前をつける
:Denite -resume -buffer-name=hoge
:対応する名前のバッファを開き直す
:Denite -resume -buffer-name=hoge -select=+1 -immediately
:次のマッチ位置へジャンプ
:Denite -resume -buffer-name=hoge -select=-1 -immediately
:前のマッチ位置へジャンプ
ということで、これらを簡単に呼び出せるようにしておけば良いみたいです。
参考記事では <C-u>g
などに割り当てていますが、個人的にはコマンドを作る方が好きです。
" grepする
command! Dgrep execute(":Denite grep -buffer-name=grep-buffer-denite")
" Denite grep結果を再表示する
command! Dresume execute(":Denite -resume -buffer-name=grep-buffer-denite")
" resumeしたgrep結果の次の行の結果へ飛ぶ
command! Dnext execute(":Denite -resume -buffer-name=grep-buffer-denite -select=+1 -immediately")
" resumeしたgrep結果の前の行の結果へ飛ぶ
command! Dprev execute(":Denite -resume -buffer-name=grep-buffer-denite -select=-1 -immediately")