他サイトに掲載していた過去記事サルベージ

以下本文


問題意識

fzfにより生産性とQuality of Vimが桁違いに向上している今日このごろ、:Agコマンドで隠しファイル(ドットファイル、dotfiles)が検索対象ファイルにならないことが密かに気になっていた。

そしてやっと隠しファイルも検索対象とする設定を書けたので、もしかしたら世界の誰かのQOV向上に貢献できるかもしれないということでここにメモ。

解決方法

プラグインはdeinで管理しているので.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#agcallする書き方だとagへの引数は内部で固定されてしまっているらしく、うまくいかなかった。 なのでこちらは諦めて、:Rg用の書き方として載っていたfzf#vim#grepcallする書き方を弄ってみたらうまくいった。

第二引数に0を渡しているのは、1を渡したら:Agで検索したファイルを開いたときになぜか同時に文字列(検索ワード?)が書き込まれることがあるという謎の現象に遭遇したため。0に変えてみたら再現しなくなったのでこれで落ち着いている。 fzfにcolumnオプションを指定するための引数っぽいが、よく分からない。ag --columnと同じ機能で、fzf側でも指定すると競合して変な挙動になるとかかもしれない。求むfzf強者。