如何在一列之前打破线?

时间:2011-10-11 09:42:18

标签: unix vim

我想在多行的一列之前插入return,因此我在正常模式下使用 Ctrl + V 选择此列的字符,然后键入{{1 ,Vim进入插入模式。键入 Enter 键后,按键 Esc ,只有一行被破坏。有没有办法执行此功能?感谢。

3 个答案:

答案 0 :(得分:6)

要在特定列之前断行,请使用\%v搜索模式原子 在零宽度的给定位置匹配(参见:help /\%v)。该 下面的示例命令在第七个和第七个之间插入新行字符 第八列。

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

这个想法可以扩展为使用光标所在列的编号 目前位于。

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

上述命令不需要选择这些列。 但是,如果您更容易使用blockwise指定拆分列 可视模式,在所选区域内使用\%V零宽度原子匹配(参见 :help \%V)。

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

答案 1 :(得分:1)

快速而肮脏的解决方案 - 首先,插入一些不在列中的字符(例如#),然后插入gv,然后插入'<,'>s/#/\r/g

如果提供更聪明的解决方案,

会很高兴。

答案 2 :(得分:0)

选择所需的行后,打破第三列:

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

(按^M<c-v><CR>

插入<c-q><CR>}

,类似于Find every third value and insert cr or newline in VIM上的回答