带有 ag 的 Ack.vim 不使用当前目录?

Ava*_*tiC 3 vim ack ag

我现在正在尝试弄清楚 vim 并制作我自己的 .vimrc。

在对搜索命令和插件进行一些研究后,我决定听从某人的建议,尝试使用Ack.vimSilverSearcher/Ag进行实际搜索。虽然我遇到了一些问题,但让我从头开始:

当我第一次安装 Ack 并通过以下方式测试“本机”Ack 时:

:Ack teststring
Run Code Online (Sandbox Code Playgroud)

一切工作正常,我在快速修复窗口中得到了结果。

然后我继续安装 SilverSearcher 并将以下内容添加到我的 vimrc 中:

if executable('ag')
  let g:ackprg = 'ag --vimgrep'
endif
Run Code Online (Sandbox Code Playgroud)

...现在,当我执行与上面相同的命令时,搜索不再起作用。相反,我立即得到一个空的快速修复窗口,并且没有其他事情发生。

但是,如果我向命令添加一个目录,例如

:Ack teststring mysubdirectory/
Run Code Online (Sandbox Code Playgroud)

搜索有效。

这让我很困惑。如果没有指定,它不应该默认为当前目录吗?至少这就是我对文档的理解,而且它似乎也适用于“本地人”。但一旦我将 ag-part 添加到我的 .vimrc 中,它就不再存在了。

谁能告诉我我在这里缺少什么?

PS:如果这很重要:我在 OSX ElCapitan 上使用 iterm2 中的 VIM8 终端版本。

Ava*_*tiC 6

好吧,我发现问题了。

显然,我们的项目中有一个 .gitignore,我的同事首先排除了所有文件,然后使用“!”包含特定文件。

据我现在了解,SilverSearcher 不能很好地处理这个问题,请参阅此处

当我使用带有选项的命令时,-U一切都会按预期进行。

不过还是谢谢你的帮助!

  • 确保使用大写“-U”而不是“-u”,否则您将无法利用 ag 的大部分文件排除功能。我建议使用同义词“--skip-vcs-ignores”来明确您的意图。 (2认同)