如何在vim + fzf中启用AG

18

我刚接触 vim,了解到其中最好的模糊搜索工具之一是 fzf,已开始使用。但每当我输入 :Ag 命令时,出现 ag is not found 的提示,我不知道它是什么意思,也不知道该如何解决。

3个回答

19

如果你使用的是 Mac,需要安装ag:

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

14
  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命令允许你搜索文件的内容,而不是仅仅搜索文件名。

    使用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)


7
为了在搜索期间预览光标下的文件,你可以将以下内容添加到.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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接