vim 在替换命令中重复一个模式
vim repeat a pattern in a replace command
我有以下文字:
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, 等等 但我不想那样做。我想要一个单一的替代命令 select 模式并重复它。如何实现?
您可以使用:
:%s/.*/{ DisplayName: DispName(&), Value: &},/
这里 &
是使用 .*
的完整匹配字符串的反向引用。这将用以下内容替换给定内容:
{ DisplayName: DispName(Lang1), Value: Lang1},
{ DisplayName: DispName(Lang2), Value: Lang2},
{ DisplayName: DispName(Lang3), Value: Lang3},
如果你想更具体,那么你可以使用这个正则表达式而不是 .*
:
^Lang[0-9]*$
我有以下文字:
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, 等等 但我不想那样做。我想要一个单一的替代命令 select 模式并重复它。如何实现?
您可以使用:
:%s/.*/{ DisplayName: DispName(&), Value: &},/
这里 &
是使用 .*
的完整匹配字符串的反向引用。这将用以下内容替换给定内容:
{ DisplayName: DispName(Lang1), Value: Lang1},
{ DisplayName: DispName(Lang2), Value: Lang2},
{ DisplayName: DispName(Lang3), Value: Lang3},
如果你想更具体,那么你可以使用这个正则表达式而不是 .*
:
^Lang[0-9]*$