2011-10-11 59 views
3

我想插入的多行一列之前返回,所以選擇該列的字符Ctrl鍵 + V在正常模式,然後鍵入I,然後進入插入模式。輸入後輸入鍵,然後按鍵Esc,只有一條線斷了。有什麼辦法可以執行這個功能嗎?謝謝。如何在一列之前斷行?

+1

相關: [查找每個第三個值並在VIM中插入cr或換行符](http://stackoverflow.com/questions/7714278/find-every-thi rd-value-and-insert-cr-or-newline-in-vim/7714512#7714512) – Jin

回答

6

要在特定列之前中斷行,請使用\%v搜索模式原子 ,該位在零寬度的給定位置匹配(請參閱:help /\%v)。以下示例命令的 將在第八列之間的第七個和第 之間插入新的行字符。

:%s/\%8v/\r/ 

這個想法可以擴展到使用光標所在 當前所在的列數。

:exe'%s/\%'.virtcol('.').'v/\r/' 

上述命令既不需要選擇那些列。 但是,如果您更容易以塊狀方式指定分割列 可視模式,請在所選區域內使用\%V零寬度原子匹配(請參閱 )。

:'<,'>s/\%V/\r/ 
1

快速和骯髒的解決方案 - 首先,插入一些不在列的字符(比如#),然後,gv,然後'<,'>s/#/\r/g

會很高興,如果提供更聰明的解決方案。

0

選擇期望的線,在第三列打破之後:

:'<,'>g/./norm! 3|a^M 

,相似(^M<c-v><CR><c-q><CR>插入)來回答關於Find every third value and insert cr or newline in VIM

+0

這個命令感覺有點過於複雜。另外,其性能明顯低於[純代換]的情況(http://stackoverflow.com/questions/7724089/how-to-break-lines-before-one-column/7725184#7725184)。順便說一下,它也適用於[答案]中提出的命令(http://stackoverflow.com/questions/7714278/find-every-third-value-and-insert-cr-or-newline-in-vim/7714682#7714682)你鏈接到:[解決方案使用替代](http://stackoverflow.com/questions/7714278/find-every-third-value-and-insert-cr-or-newline-in-vim/ 7721025#7721025)要快得多。 –

相關問題