我正在编辑重组文本文件。 我经常需要在一行中放置一些像“=-`~”这样的字符,并且我希望该行的长度与上一行匹配。 在vim中应该如何做到这一点?
a long long title
=================
谢谢!
我正在编辑重组文本文件。 我经常需要在一行中放置一些像“=-`~”这样的字符,并且我希望该行的长度与上一行匹配。 在vim中应该如何做到这一点?
a long long title
=================
谢谢!
另一个可以工作的:
yypv$r=
你觉得 yyp:s/./=/g
怎么样?
你可以将其映射到一个键上,例如
:map <F5> yyp:s/./=/g<CR>
Hello World
普通模式:
YpVr=
结果为:
Hello World
===========
解释
Y -> 复制整行,类似于 yy
p -> 粘贴该行
V -> 在可视化模式下选择整行
r -> 用后一个字符替换所选内容的全部
= -> 用来替换其他字符的字符
如果您的行有前导空格,例如:
Hello World
使用:
Ypv$r=
结果:
Hello World
===========
我建议使用yypver=
尽可能避免搜索和换档按钮。这当然也可以映射到一个按键上。
yypVr=
?为了避免给未来的读者带来困惑。 - sa125\s+
结尾,那当然是一个有效的解决方案。 - chelmertz当光标放置在一行很长很长的代码
上时,你可以使用类似以下的方法
:s/\(.*\)/\=submatch(1) . nr2char(13) . repeat('=', strlen(submatch(1)))/
nmap __ :s/\(.*\)/\=submatch(1) . nr2char(13) . repeat('=', strlen(submatch(1)))/
所以,你可以通过键入__
来给光标所在的行添加下划线。
nnoremap Y y$
,这样Y就与D和C保持一致。 - Randy Morris