假设我有需要更改的文字:
<tag name="aaaa" value="${bbbb}"/>
<tag name="cccc" value="${dddd}"/>
我需要将其添加到表单
<tag name="bbbb" value="${bbbb}"/>
<tag name="dddd" value="${dddd}"/>
即,使用${...}
的{{1}}内的部分替换value
内的部分。
答案 0 :(得分:3)
您可以使用捕获组和\zs
/ \ze
来轻松替换。
:%s/name="\zs[^"]*\ze" value="\${\([^}]*\)}/\1/
\zs
和\ze
标记将被替换的匹配的开始和结束[^"]*
匹配零个或多个不匹配"
\(...\)
一个捕获组。替换为\1
,\2
,... 如需更多帮助,请参阅:
:h /\zs
:h /\(
:h /[
:h :s
答案 1 :(得分:1)
试试这个
:%s/name=".*" value="[$]{\(.*\)}"/name="\1" value="${\1}"/
答案 2 :(得分:0)
要创建宏,请使用qa
q
。然后使用@a
执行宏。
qa
将宏绑定到a
,然后您可以开始输入以记录宏。然后再次按q
将停止录制宏。
因此,根据您的情况,我进入命令模式并输入:
qaf{lyf}2F"PxF"l4xq
然后@a
从另一条线的开头再次执行它。
您还可以在最后一个q之前添加jF<
以自动将光标移动到下一行。然后你可以通过10 @ a来链接整个宏。这将编辑10连续的行。