我有以下文字:

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替换每一行,然后用2、3、4等替换单个1。但是我不想这样做。我想要一个替代命令来选择模式并重复执行。如何实现呢?

最佳答案

您可以使用:

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


这里的&是使用.*的完整匹配字符串的后向引用。这将用以下内容替换给定的内容:

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


如果要更具体,则可以使用此正则表达式代替.*

^Lang[0-9]*$

10-04 21:45