【问题标题】:Ack.vim with ag not using current directory?带有 ag 的 Ack.vim 不使用当前目录?
【发布时间】:2016-11-17 07:46:11
【问题描述】:

我目前正在尝试找出 vim 并制作我自己的 .vimrc。

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

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

:Ack teststring

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

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

if executable('ag')
  let g:ackprg = 'ag --vimgrep'
endif

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

但是,如果我在命令中添加目录,例如

:Ack teststring mysubdirectory/

搜索有效。

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

谁能给我提示一下我在这里缺少什么?

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

【问题讨论】:

  • 嗯,对不起,我忘了在 Reddit 上回复:P 无论如何......是的,我不明白。 :Ack teststring:Ack teststring . 对我的工作方式相同(g:ackprg 设置为与您的相同)。你能从命令行试试看ag --vimgrep teststringag --vimgrep teststring .是否做同样的事情?
  • 你在那个帖子里得到了非常中肯的建议。你到底为什么选择插件方式?
  • @romainl 是的,我阅读了每条评论,昨天我在玩 grep 和 vimgrep。但 Ran4 的评论也是有道理的,如果您必须自己配置所有内容,您可能会犯错误,尤其是作为初学者(例如,请参阅此线程:D)。所以我现在正在尝试这个。 @Amadan 您的两个命令在命令行上似乎都没有为我做任何事情。但如果我用'.'代替。使用“*”并键入 ag --vimgrep teststring * 会运行搜索。我认为我的配置有问题? ...这很奇怪,因为它基本上是全新安装:/

标签: vim ack ag


【解决方案1】:

好的,我找到了问题。

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

据我所知,SilverSearcher 不能很好地处理这个问题,请参阅 here

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

感谢您的帮助!

【讨论】:

  • 确保您使用大写字母 -U 而不是 -u,否则您将无法利用 ag 的大部分文件排除。我建议使用同义词 --skip-vcs-ignores 来明确您的意图。
  • 作为一个选项,您可以使用ripgrep 而不是ag。它按预期开箱即用。 let g:ackprg = 'rg --vimgrep --no-heading'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
  • 2018-05-27
  • 2023-03-05
  • 2019-01-18
  • 2012-05-17
  • 2019-03-06
相关资源
最近更新 更多