如何在 vim + fzf 中启用 AG

How to enable AG in vim + fzf

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

您需要安装 ag,以防您使用 mac:

brew install the_silver_searcher

作为测试 fzf 的另一种选择,您还可以使用 ctrl p 调用 :Files 通过使用这张地图:

nnoremap <c-p> :Files<CR>

并且你可以在调用:Files时使用ripgrep,为此你需要修改默认的FZF_DEFAULT_COMMAND

export FZF_DEFAULT_COMMAND='rg --files --no-ignore --hidden --follow --glob "!.git/*"'

您可以在此处找到更多信息:https://github.com/junegunn/fzf#usage

  1. 默认情况下,fzf使用系统的"find"命令。您可以通过将环境变量 $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 全屏搜索和预览 window(使用 :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)

要在搜索过程中预览 window 光标下的文件,您可以将下面添加到 .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)

然后使用:Ag mySearchTerm在右侧预览结果。

为了方便,您也可以将 ctrl-g 映射到它:

map <C-g> :Ag