我想在VIM中将所有多个“-”字符(从行首开始)替换为“=”
例如,用“=====”替换“-----”
或用“========”替换“----------”
我创建了这个正则表达式:
%s/^-\{2,}/= ????/g
有人知道我如何复制“=”替换吗?(在“=”后面要放什么)
我想在VIM中将所有多个“-”字符(从行首开始)替换为“=”
例如,用“=====”替换“-----”
或用“========”替换“----------”
我创建了这个正则表达式:
%s/^-\{2,}/= ????/g
试试这个:
:%s/^-\{2,}/\=substitute(submatch(0), '-','=','g')/
或者:
:%s/^-\{2,}/\=repeat('=',len(submatch(0)))/
请查看:help sub-replace-\=
以获取更多详细信息。
我相信还有更好的答案,但从实际角度考虑,为了简单起见,我会把这个问题分成两个独立的操作:
%s/--/==/g
%s/=-/==/g
-----
变成====-
。然后使用第二个方法修复剩余的=-
。不过,如果有更优雅的解决方案,我会很乐意看到的。从技术角度来说,%s/-/=/g
可以完成任务,但是它会在整个文件中的每一个-
都进行替换。
如果你想要替换的行确实以-
开头,我会这样做:
g/^-/s/-/=/g
-
之前有一些空格:g/^\s*-/s/-/=/g
----------- the-composite-word
=========== the=composite=word
g/^-/s/\w\@<!-/g