問題意識
fzfにより生産性とQuality of Vimが桁違いに向上している今日このごろ、:Ag
コマンドで隠しファイル(ドットファイル、dotfiles)が検索対象ファイルにならないことが密かに気になっていた。
そしてやっと隠しファイルも検索対象とする設定を書けたので、もしかしたら世界の誰かのQOV向上に貢献できるかもしれないということでここにメモ。
解決方法
プラグインはdeiinで管理しているので.dein.toml
形式で抜粋。fzfとagは別途インストール済ということで。
# .dein.toml
[[plugins]]
repo ='junegunn/fzf.vim'
hook_add ='''
" fzfは単体でインストールしているのでそこへのパスset rtp+=/usr/local/opt/fzf
" dotファイルを含める&プレビュー
command!-bang -nargs=? -complete=dir Files
\call fzf#vim#files(<q-args>, fzf#vim#with_preview({'source':'ag --hidden --ignore .git -g ""'}),<bang>0)
command!-bang -nargs=* Ag
\call fzf#vim#grep( \'ag --column --color --hidden --ignore .git '.shellescape(<q-args>),0, \<bang>0 ? fzf#vim#with_preview('up:60%') \: fzf#vim#with_preview('right:50%','?'), \<bang>0)'''
fzf.vimのREADMEを参考に、:Files
コマンドは.gitignore
されていない全ファイルを対象にする。この書き方のソースは失念、多分検索すれば似たようなものがでてくるはず。
そして今回やっと成功したのが:Ag
コマンドの設定。READMEに書いてあるfzf#vim#ag
をcall
する書き方だとag
への引数は内部で固定されてしまっているらしく、うまくいかなかった。
なのでこちらは諦めて、:Rg
用の書き方として載っていたfzf#vim#grep
をcall
する書き方を弄ってみたらうまくいった。
第二引数に0
を渡しているのは、1
を渡したら:Ag
で検索したファイルを開いたときになぜか同時に文字列(検索ワード?)が書き込まれることがあるという謎の現象に遭遇したため。0
に変えてみたら再現しなくなったのでこれで落ち着いている。
fzfにcolumn
オプションを指定するための引数っぽいが、よく分からない。ag --column
と同じ機能で、fzf側でも指定すると競合して変な挙動になるとかかもしれない。求むfzf強者。