如何在Vim + FZF中启用AG

edd*_*ark 5 vim ag fzf

我是vim的新手。我在网上阅读到,vim中最好的模糊查找器之一是fzf。我已经开始使用它。但是,每当我编写命令:Ag时,我都会得到ag is not found。我不知道这意味着什么,也不知道如何解决。

gre*_*ory 7

  1. 默认情况下,fzf使用系统的“查找”命令。您可以通过将env变量$ FZF_DEFAULT_COMMAND更改为第三方实用程序来进行更改。使用这些工具的优点是它们观察忽略文件。使用Silver Searcher(即ag),您的默认命令如下所示:

    $echo $FZF_DEFAULT_COMMAND ag -l --path-to-ignore ~/.ignore --nocolor --hidden -g ""

    不管使用哪种FZF命令,您都在Shell上收集符合条件的文件名

  2. 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)


nba*_*ari 6

如果您在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


LeO*_* Li 5

要在搜索过程中为光标下的文件提供预览窗口,您可以将以下内容添加到.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