快速地把一行像「==========」一樣,我正在編輯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選擇就行了一切。
如果你在結尾的空白,你可以使用克_運動才能到最後一個非空白字符。
這不是最好的答案,請參閱下面的更好的解決方案,使用可視化模式替換粘貼的行而不是使用替換。 –
準確使用替代品有什麼不好? –
在這種情況下,它是矯枉過正的,它要求正則表達式應用於線上的每個字符。它也改變你當前的搜索寄存器,所以現在你將無緣無故地高亮**整個**文檔。它也不會處理行開始處的任何空白。 –