快速地把一行像“==========”一样,我正在编辑restructuredtext文件。我经常需要在一行中放置一些像“= -`〜”的字符,并且我希望行的长度与上一行相匹配。我应该如何在vim中做到这一点?我怎么能像vim
a long long title
=================
谢谢!
快速地把一行像“==========”一样,我正在编辑restructuredtext文件。我经常需要在一行中放置一些像“= -`〜”的字符,并且我希望行的长度与上一行相匹配。我应该如何在vim中做到这一点?我怎么能像vim
a long long title
=================
谢谢!
yyp:s/./=/g
怎么样?
您可以将它映射到一个密钥,例如, :map <F5> yyp:s/./=/g<CR>
另外,将工作:
yypv$r=
'yypVr ='有点短,但技术相同。 –
@Randy:'YpVr =':-) – sidyll
@sidyll yy和Y是相同的按键次数:P。另外,很多人都是'nnoremap Y y $',所以Y与D和C一致 –
当光标放在a long long line
你可以使用类似
:s/\(.*\)/\=submatch(1) . nr2char(13) . repeat('=', strlen(submatch(1)))/
为了使其更容易做替代,我想然后使用地图:
nmap __ :s/\(.*\)/\=submatch(1) . nr2char(13) . repeat('=', strlen(submatch(1)))/
因此,您可以在光标所在的位置下划线与打字__
。
如果你的行开始没有任何尾随空白:
Hello World
普通模式:
ŸpV[R=
得到:
Hello World
===========
说明
ý - >扬克整行,像ÿý
p - >粘贴线
V - >选择在视觉整行在线模式 r - >将所有选择替换为下一个字符呃
= - >替换其他
字符如果行有前导空格,如:
Hello World
用途:
Ÿpv$r=
,并提供:
Hello World
===========
我们使用v$视觉选择到该行的结束,而不是使用V选择就行了一切。
如果你在结尾的空白,你可以使用克_运动才能到最后一个非空白字符。
这不是最好的答案,请参阅下面的更好的解决方案,使用可视化模式替换粘贴的行而不是使用替换。 –
准确使用替代品有什么不好? –
在这种情况下,它是矫枉过正的,它要求正则表达式应用于线上的每个字符。它也改变你当前的搜索寄存器,所以现在你将无缘无故地高亮**整个**文档。它也不会处理行开始处的任何空白。 –