我有如下几行:
aaa
bbb
ccc
ddd
我希望他们像这样改变:
aaa=$aaa
bbb=$bbb
ccc=$ccc
ddd=$ddd
所以我使用以下命令在vim中执行此操作,但出现错误
:s/\(\^*\)/\1=\$\1/
我意识到\1
这里不能使用两次,那我该怎么做呢?
我有如下几行:
aaa
bbb
ccc
ddd
我希望他们像这样改变:
aaa=$aaa
bbb=$bbb
ccc=$ccc
ddd=$ddd
所以我使用以下命令在vim中执行此操作,但出现错误
:s/\(\^*\)/\1=\$\1/
我意识到\1
这里不能使用两次,那我该怎么做呢?
反向引用\1
可以根据需要多次使用,但您还有另一个问题。您的正则表达式应如下所示:
:%s/^\(.*\)/\1=\$\1/
解释:%
告诉 vim 替换所有行;^
作为行首的标记应该是正则表达式中的第一个字符,并且不应转义。意思是“.*
任意字符任意次数”。但是,原始表达式\(\^*\)
将查找任意数量的文字字符重复^
(包括没有)。
当匹配该行的全部内容时,您既不需要^
锚点,也不需要通过\(...\)
. 在替换中,您可以使用\0
或更短的&
. (另外,你不需要在$
那里逃脱。)
:%s/.*/&=$&