【问题标题】:Quickfix List doesn't work when using ack or The Silver Searcher使用 ack 或 Silver Searcher 时快速修复列表不起作用
【发布时间】:2014-06-05 12:08:59
【问题描述】:

我是 Vim 新手,正在尝试找出项目范围内的搜索。在Practical VimThoughbot post 之后,我尝试使用 ack 代替 grep,然后通过将其放入我的 vimrc 中使用 Silver Searcher 代替 ack

尝试使用 ack 时(遵循 Practical Vim): set grepprg=ack\ --nogroup\ $* "Use ack instead of grep set grepformat=%f:%l:%c:%m

尝试使用 Silver Searcher 时(跟随 Thoughtbot): set grepprg=ag\ --nogroup\ --nocolor set grepformat=%f:%l:%c:%m

在这两种情况下,当我搜索某些内容时,比如:grep RSpec,结果列表都会出现。我输入:copen 打开快速修复列表。但是,vim 不会打开第一个匹配项,当我在 Quickfix List 中的匹配项上按 enter 时,它什么也不做。 :cnext:cprev 等也什么都不做。 Quickfix 列表在每个匹配项之前还有||

当我尝试:vimgrep RSpec **/*.rb 时,结果会显示出来,我输入:copen,第一个匹配项显示在缓冲区中,当我在任何其他匹配项上按 Enter 时,它们会按预期在缓冲区中打开。

任何帮助弄清楚如何纠正这个问题将不胜感激。

【问题讨论】:

  • 您描述中的|| 部分让我认为grepformat 选项可能不正确。可以加个截图吗?
  • 感谢 romainl。肯特的回答提到了同样的事情。删除该行解决了问题。
  • 请您指定您传递给 grepprg 参数的不同标志应该用于什么?具体来说,$* 是做什么用的?

标签: vim ack


【解决方案1】:

删除您的grepformat 设置并使用默认值,默认值应适用于agack

通过:h errorformat检查grepforamt中字段的含义,您的ag/grep输出不符合您定义的格式,因此:grep无法解析输出。

【讨论】:

  • 谢谢肯特。我注释掉了那行,|| 从 Quickfix List 的结果中消失了,现在回车键将我带到文件。
  • @zcrar70 完成。谢谢。 SO 也是新手。
猜你喜欢
  • 1970-01-01
  • 2014-05-24
  • 2017-04-20
  • 2022-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
相关资源
最近更新 更多