如何在vim中快速添加像“==========”这样的行

时间:2011-08-08 06:27:47

标签: vim

我正在编辑restructuredtext文件。我经常需要在一行中加入一些像“= -`~”这样的字符,我希望该行的长度与前一行匹配。我应该怎样在vim中这样做?

a long long title
=================

谢谢!

5 个答案:

答案 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)))/

因此,您可以通过键入__来强调光标所在的行。