如何根据vim中的条件执行行连接?

时间:2010-11-25 15:25:20

标签: vim concatenation vi

在vim中,如何在我的文件上运行以下逻辑:

  

如果行n没有以分号结尾,请连接行nn + 1

我有破坏SQL语句的文件:

  

破解版

select * from tab1;
select col4, col5 from
 tab5;
insert into
 tab6 values(
2, 4);
  

所需版本

select * from tab1;
select col4, col5 from tab5;
insert into tab6 values(2, 4);

2 个答案:

答案 0 :(得分:4)

:v/;$/normal J

您可能需要多次运行。

编辑:这是解决在多个(> 2)行分割的行的解决方案:

%s/^\s*$\|\([^;]\)\s*\n/\1/g 

注意:由于^ \ s * $

,空行被保留,但被修剪

答案 1 :(得分:1)

无耻的“肮脏”“黑客”; - )

:1,$ join  

将文件中的每一行连接到一个,但您可以调整范围...

:s:;:&\r:g 

这取代了每一个;用;和换行符

HTH