我正在编辑restructuredtext文件。我经常需要在一行中加入一些像“= -`~”这样的字符,我希望该行的长度与前一行匹配。我应该怎样在vim中这样做?
a long long title
=================
谢谢!
答案 0 :(得分:17)
另一个可行的方法:
yypv$r=
答案 1 :(得分:6)
yyp:s/./=/g
怎么样?
您可以将其映射到密钥,例如
:map <F5> yyp:s/./=/g<CR>
答案 2 :(得分:2)
我会使用yypver=
来避免搜索和换档按钮尽可能多。这当然也可以映射到密钥。
答案 3 :(得分:2)
如果您的行开始时没有任何尾随空格:
Hello World
普通模式:
ý P V - [R =
给出:
Hello World
===========
解释
Y - &gt; Yank整行,如 y y
p - &gt;粘贴线
V - &gt;在可视线模式中选择整条线
r - &gt;用下一个字符替换所有选择
= - &gt;替换其他人的角色
如果你的行有空格,例如:
Hello World
使用:
ý P v $ - [R =
,并提供:
Hello World
===========
我们使用 v $ 视觉选择到行尾,而不是使用 V 来选择行上的所有内容。
如果你有尾随空格,你可以使用 g _ 移动来获取最后一个非空白字符。
答案 4 :(得分:0)
当光标放在a long long line
上时,您可以使用类似
:s/\(.*\)/\=submatch(1) . nr2char(13) . repeat('=', strlen(submatch(1)))/
为了更容易进行替换,我会使用地图:
nmap __ :s/\(.*\)/\=submatch(1) . nr2char(13) . repeat('=', strlen(submatch(1)))/
因此,您可以通过键入__
来强调光标所在的行。