ag Silver Searcher:模式的规则是什么?

时间:2014-03-05 06:32:14

标签: regex vim vimgrep

我在Vim中使用ag,搜索字符串/文件效果很好。

然而,似乎没有太多关于如何为ag构建模式的文档。

我正在尝试使用ag而不是vimgrep来自Practical Vim的一个例子。

我希望在递归中的目录中的所有文件中找到“Pragmatic Vim”的每一个匹配项,并将此字符串替换为“Practical Vim”。在某些文件中还有“实用书架”,并且该字符串必须保留。

这本书暗示了这种方法:

/Pragmatic\ze Vim
:vimgrep /<C-r>// **/*.txt

在该步骤之后,使用:Qargs插件命令填充quickfix列表,最后:argdo %s//Practical/g

现在,如何使用/Pragmatic\ze指定ag模式?

ag是否完全符合我在这里要做的事情?

1 个答案:

答案 0 :(得分:23)

Silver Searcher工具使用PCRE(Perl兼容正则表达式)语法。因此,除了Vim \ze之外,您还需要使用正向前瞻的Perl语法:(?=pattern)。 (\zs的相应 lookbehind 将为(?<=pattern)。)

我在命令行上显示你的例子,但在Vim中应该是相同的:

$ ag 'Pragmatic(?= Vim)'