2

我正在尝试在我的文件中搜索和替换所有出现的特定模式,然后调用toupper()每个匹配项。在实践中,我不能只用手来做这件事的情况并不多,但我很想提高我的 Vim 技能并找到一种(简单的)方法让 Vim 为我做这件事。我说简单,否则我就忘了。

通过阅读 Vim 帮助s/,我应该能够执行以下操作:

:%s/\vfunction ([a-z0-9_]+)/\="function " . toupper("\1")/g

(假设我将所有函数定义名称都大写)。

这实际上只是用控制字符替换了函数名称^A。如何在正则表达式中引用捕获组?

4

2 回答 2

3

道歉。我应该更仔细地阅读。无论如何,我会回答我自己的问题,而不是删除它。您需要使用submatch(n)来引用捕获组:

:%s/\vfunction ([a-z0-9_]+)/\="function " . toupper(submatch(1))/g
于 2012-10-29T12:35:15.840 回答
1

\U在替换模式中使用。

:%s/\vfunction ([a-z0-9_]+)/function \U\1/
于 2012-10-29T12:37:58.137 回答