我有以下文字:
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]*$