function! RipgrepFzf(query, fullscreen)
let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case -- %s || true'
let initial_command = printf(command_fmt, shellescape(a:query))
let reload_command = printf(command_fmt, '{q}')
let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]}
call fzf#vim#grep(initial_command, 1, fzf#vim#with_preview(spec), a:fullscreen)
endfunction
command! -nargs=* -bang FRG call RipgrepFzf(<q-args>, <bang>0)我可以用它执行一个简单的搜索,但是我无法使用RG标志使我的搜索更加精确(文件类型搜索、排除目录搜索或子目录搜索等等)。
我发现一些文章建议对函数进行小改动,以获得我正在寻找的内容如下:
--之前删除%s
设command_fmt = 'rg --列--行号-没有标题-color=始终-智能-大小写%s \x-真shellescape函数
设initial_command = printf(command_fmt,a:query)在进行这些更改之后,我可以在一开始使用标志,但是在更新我的搜索时,它并不像预期的那样工作。
发布于 2021-07-26 15:27:43
若要仅通过扩展名/文件类型搜索文件,请在命令行中尝试以下操作:
rg . --files -g "*.{py}"使用此im只搜索python文件
我的产出:
> rg . --files -g "*.{py}"
./another.py
./colors_do_not_apply.py将目录排除在ripgrep中
如果您想在当前目录下搜索all content from files:
> rg --column --line-number --no-heading --color=always --smart-case --hidden -g "\!.git" .注意到:
--hidden用于隐藏文件-g "\!.git"用于ignoring git文件夹(您可以对其他文件夹执行相同的操作)注意事项
我使用了"\!.git",它只在终端中使用(我的zsh没有爆炸!)),在vim中,您可以使用它作为"!.git"
如果您只想在当前dir中搜索文件和exlcude git文件夹:
> rg --hidden -g "\!.git" --files .在子目录中搜索是自动的,所以您不必担心。
最后
我看到您在github上复制粘贴了一个来自fzf.vim的花哨函数,我也使用了:)
这是我的功能:
" search for content in files in current project, including hidden ones and ignoring git
function! SearchContentInFiles(query, fullscreen)
let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case --hidden -g "!.git" -- %s || true'
let initial_command = printf(command_fmt, shellescape(a:query))
let reload_command = printf(command_fmt, '{q}')
let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command, '--exact', '--pointer=@', '-i', '-m', '--cycle', '--border=none', '--marker=*', '--ansi', '--preview-window=left,50%', '--bind=alt-bspace:backward-kill-word,ctrl-x:beginning-of-line+kill-line,ctrl-a:select-all', '--color=16,fg+:bright-red,hl:bright-blue,hl+:green,query:blue,prompt:yellow,info:magenta,pointer:bright-yellow,marker:bright-blue,spinner:bright-blue,header:blue', '--prompt=content from files(+hidden) (git ignored) at . > ']}
call fzf#vim#grep(initial_command, 1, fzf#vim#with_preview(spec), a:fullscreen)
endfunction
command! -nargs=* -bang SCIF call SearchContentInFiles(<q-args>, <bang>0)
nnoremap <silent> <S-F> :SCIF!<CR>嗯,它很大,我知道。这是我所拥有的最好的。
唯一的区别是:
command_fmt中,我为隐藏文件和排除git文件夹添加了额外的arg。'--exact' - exact match
'--pointer=@',
'-i',
'-m',
'--cycle', (repeat after end)
'--border=none',
'--marker=*',
'--ansi', (enable colors)
'--preview-window=left,50%',
'--bind=alt-bspace:backward-kill-word,ctrl-x:beginning-of-line+kill-line,ctrl-a:select-all', (some keybindings)
'--color=16,fg+:bright-red,hl:bright-blue,hl+:green,query:blue,prompt:yellow,info:magenta,pointer:bright-yellow,marker:bright-blue,spinner:bright-blue,header:blue', (color scheme)
'--prompt=content from files(+hidden) (git ignored) at . > ' (prompt text)ofc,您可以在vim中集成上面的每个命令。
希望这些能帮上忙。
https://stackoverflow.com/questions/65336054
复制相似问题