我是vim的新手。我在网上阅读到,vim中最好的模糊查找器之一是fzf。我已经开始使用它。但是,每当我编写命令:Ag时,我都会得到ag is not found。我不知道这意味着什么,也不知道如何解决。
默认情况下,fzf使用系统的“查找”命令。您可以通过将env变量$ FZF_DEFAULT_COMMAND更改为第三方实用程序来进行更改。使用这些工具的优点是它们观察忽略文件。使用Silver Searcher(即ag),您的默认命令如下所示:
$echo $FZF_DEFAULT_COMMAND
ag -l --path-to-ignore ~/.ignore --nocolor --hidden -g ""
不管使用哪种FZF命令,您都在Shell上收集符合条件的文件名。
FZF + Vim是fzf之外的一个额外插件,它提供了:Ag命令以在(g)vim中使用。:Ag命令使您可以搜索文件的内容,而其:Files命令则仅搜索文件名。
使用FZF + Vim时可能需要一些.vimrc定制。例如,我喜欢的调整选项是使用全屏搜索和预览窗口运行:Ag(使用:Ag!而不是:Ag):
command! -bang -nargs=* Ag
\ call fzf#vim#ag(<q-args>,
\ <bang>0 ? fzf#vim#with_preview('up:60%')
\ : fzf#vim#with_preview('right:50%:hidden', '?'),
\ <bang>0)
如果您在Mac上,则需要安装ag:
brew install the_silver_searcher
Run Code Online (Sandbox Code Playgroud)
作为测试fzf的另一种选择,您还可以使用以下地图ctrl p进行调用:Files:
nnoremap <c-p> :Files<CR>
Run Code Online (Sandbox Code Playgroud)
而且您可以在调用时使用ripgrep:Files,为此,您需要修改默认值FZF_DEFAULT_COMMAND:
export FZF_DEFAULT_COMMAND='rg --files --no-ignore --hidden --follow --glob "!.git/*"'
Run Code Online (Sandbox Code Playgroud)
您可以在这里找到更多信息:https : //github.com/junegunn/fzf#usage
要在搜索过程中为光标下的文件提供预览窗口,您可以将以下内容添加到.vimrc 或 init.vim
command! -bang -nargs=* Ag
\ call fzf#vim#grep(
\ 'ag --column --numbers --noheading --color --smart-case '.shellescape(<q-args>), 1,
\ fzf#vim#with_preview(), <bang>0)
Run Code Online (Sandbox Code Playgroud)
然后使用:Ag mySearchTerm右侧的预览来查看结果。
为了方便起见,您还可以映射ctrl-g到它:
map <C-g> :Ag