継続的ブログ

主にweb系の技術について書いています

vimでプロジェクトファイル内テキスト検索(fzf)

f:id:akiza:20170806173906g:plain

こんな感じのやつです。

fzf.vimのREADMEに書いてあるやり方(↓)だと、開いたファイルと同階層のものしか見てくれなかったのでいろいろ試してみました。

github.com

自分の.vimrcに書いてあるfzfの設定はこんな感じです。

" fzf
set rtp+=/usr/local/opt/fzf

function! s:find_git_root()
  return system('git rev-parse --show-toplevel 2> /dev/null')[:-2]
endfunction

command! ProjectFiles execute 'Files' s:find_git_root()

command! -bang -nargs=* Pt
  \ call fzf#vim#grep(
  \   'pt --column --ignore=.git --global-gitignore '.shellescape(<q-args>), 1,
  \   <bang>0 ? fzf#vim#with_preview('up:60%')
  \           : fzf#vim#with_preview({ 'dir': s:find_git_root() }),
  \   <bang>0)

最後のPtというところがそうです。
ほぼREADMEに書いてあるのと一緒ですが、ポイントは { 'dir': s:find_git_root() } をオプションに渡していることです。
あと、自分は検索ツールにthe_platinum_searcherを使っているので、そこは変えています。

github.com

とりあえずご参考まで。。

fzfもっと使いこなしたい!

実践Vim 思考のスピードで編集しよう! (アスキー書籍)

実践Vim 思考のスピードで編集しよう! (アスキー書籍)