我有以下文字:
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。但是我不想那样做。我想要一个替换命令来选择模式并重复它。怎么做到这一点?
答案 0 :(得分:5)
您可以使用:
:%s/.*/{ DisplayName: DispName(&), Value: &},/
此处&
是使用.*
的完整匹配字符串的反向引用。这将用以下内容替换给定内容:
{ DisplayName: DispName(Lang1), Value: Lang1},
{ DisplayName: DispName(Lang2), Value: Lang2},
{ DisplayName: DispName(Lang3), Value: Lang3},
如果您想更具体一点,那么您可以使用此正则表达式而不是.*
:
^Lang[0-9]*$