27

ag在 Vim 中使用字符串/文件搜索的结果很好。

但是,似乎没有太多文档是如何为 ag 构建模式的。

在 Practical Vim book 的示例中,我尝试使用 ag 而不是 vimgrep。

我想递归地在目录中的所有文件中找到“Pragmatic Vim”的每一个出现,并用“Practical Vim”替换这个字符串。某些文件中还有“实用书架”,该字符串必须保留。

这本书提出了这种方法:

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

在这一步之后,使用插件命令填充快速修复列表:Qargs,最后:argdo %s//Practical/g

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

完全是ag为我在这里想要做的事情而设计的吗?

4

1 回答 1

30

Silver Searcher 工具使用 PCRE(Perl 兼容的正则表达式)语法。\ze因此,您需要使用 Perl 语法来代替 Vim 的积极前瞻(?=pattern)。(相应的后视\zs将是(?<=pattern)。)

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

$ ag 'Pragmatic(?= Vim)'
于 2014-03-05T07:58:15.953 回答