需要编辑的文件是markdown类型,有多个部分,以字符串修饰-
,如:
Section 1
---------
Another Section
---------------
我想将所有-
内容都改为=
。vim 中有没有好的方法来实现这一点?假设所有部分字符串都可以-\+$
在 vim 中识别为 ,但长度各不相同。我搜索过,但到目前为止还没有找到一个好的解决方案。
谢谢。
答案1
首先,我觉得有义务提一下一个专门讨论 vim 问题的网站...
话虽如此,但有几种不同的方法可以实现这一点。一种方法是在替代命令中使用“评估寄存器”。看起来如下:
:%s/-\+/\=repeat('=', len(submatch(0)))
这实际上是在说:
用“=”重复替换一个或多个破折号n次,其中 n 是破折号的数量。
这是最直接/最明显的方式,但它有点笨重/冗长,这是使用评估寄存器的替代命令的典型特征。
你也可以使用全局命令来执行此操作。如下所示:
:g/^-\+$/norm Vr=
这实际上是在说:
在每一行仅包含破折号的内容上,
Vr=
都像我自己输入的那样进行输入。
V
将直观地选择整行,并r=
用“=”字符替换整个选择。
答案2
您还必须:global
将替换情境化。
:g/^-\+$/s/-/=/g