在替换命令中如何重复一个模式:使用vim

4

我有以下文本:

Lang1
Lang2
Lang3

现在,我想用类似于以下模式的内容替换每行中的所有文本:

{ DisplayName: DispName(Lang1), Value: Lang1 },
{ DisplayName: DispName(Lang1), Value: Lang2 },
{ DisplayName: DispName(Lang1), Value: Lang3 },

现在,我该如何使用vim命令替换来实现呢?我可以使用:%s/*$/\{\ DisplayName\:\ DispName\(Lang1\)\,\ Value\:\ Lang1\}\,/替换每一行的Lang1,然后将单个的1替换为2、3、4等。但是我不想这么做。我希望有一个单一的替换命令来选择模式并重复执行它。如何实现?
1个回答

5

您可以使用:

:%s/.*/{ DisplayName: DispName(&), Value: &},/

这里的&是使用.*完全匹配字符串的反向引用。这将使用此内容替换给定内容:

{ DisplayName: DispName(Lang1), Value: Lang1},
{ DisplayName: DispName(Lang2), Value: Lang2},
{ DisplayName: DispName(Lang3), Value: Lang3},

如果您想更具体一些,可以使用这个正则表达式代替.*:
^Lang[0-9]*$

1
这正是我想要的。我知道我们可以重复模式,但是在 Google 上找不到它。"&"和"反向引用"是我在 Google 查询中缺失的术语。 - Sankar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接