将2行连接到1行的任何快捷方式;作为vim中的分隔符

时间:2014-01-14 02:40:23

标签: vim

我想用一个看起来像这样的行的文件:

diff
patt1 = patt[0];
diff1
patt2 = patt[1];

并将其转换为:

diff patt1 = patt[0];
diff patt2 = patt[1];

gq适用于单行。 但是我想在最后用;的许多行做这件事。

3 个答案:

答案 0 :(得分:1)

我不确定最后;的重要性是什么,但是很多变种都可以用

:g/<pattern>/j

如果你想将缓冲区中的每个偶数行连接到它上面的奇数行,你可以使用

:g/^/j

因为^匹配每一行。如果您想将以;结尾的每一行加入到其上方的行中,那么

:2,$g/;$/-j

基本上是正确的,虽然它有时可能让你大吃一惊。如果你想加入足够的行,以便每一个新行(除了可能的最后一行)都以;结尾,那么试试

:g/;\@<!$/.,/;$\|\%$/j

应该这样做,尽管它可能会在最后一行给出错误消息。

答案 1 :(得分:0)

如果要加入很多行并且它们不是全部连续的,我可能会这样做:

  • qakJq - 定义宏a以向上移动一行并加入
  • g/;$/normal@a - 在以;
  • 结尾的所有行上运行该命令

答案 2 :(得分:0)

使用以下命令:

:%g/;\@<!$/j