🔍
nvim-telescope の live_grep で隠しファイルを検索対象にする
nvim-telescope のlive_grepは、デフォルトでは隠しファイル(.
から始まるファイル)が検索対象にならない。これはripgrepの標準動作であるが、特にdotfilesを編集している時など、かなーり困る。
ripgrepのrg
コマンドでこの挙動を修正するには、--hidden
オプションを付ける。
rg --hidden foobar
しかし普通は.git
だけは除外したいと思われるので、--glob
オプションで !.git
も指定するといい感じの動作になる。参考
alias rg="rg --hidden --glob '!.git'"
これをnvim-telescopeで実現するには、次のように設定する。プラグイン管理にはLazy.nvimを使用。
{
'nvim-telescope/telescope.nvim',
branch = '0.1.x',
dependencies = { 'nvim-lua/plenary.nvim' },
event = 'VeryLazy',
opts = {
defaults = {
vimgrep_arguments = {
"rg",
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
"--smart-case",
"--hidden", --追加
},
},
},
keys = {
{'<leader>g', function()
-- glob_patternオプションを引数で指定
require('telescope.builtin').live_grep({ glob_pattern = '!.git' })
end },
},
}
vimgrep_arguments
のデフォルト値は :help telescope.defaults.vimgrep_arguments
で調べてください。その末尾に --hidden
を追加、そしてlive_grep
メソッドの引数としてglob_pattern
を追加という流れです。
なお、さらに複雑な検索を行うために、rg
のオプションを直接編集できるtelescope-live-grep-args.nvimというプラグインもあるようだ。私の場合はそこまでは不要かなー。
Discussion