2010-11-25 2 views
2

は、どのように私は私のファイルの上に次のロジックを実行することができます。vimの条件に基づいて行を連結する方法は? 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); 

答えて

4
:v/;$/normal J 

複数回実行する必要があります。

EDIT:

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

注:ここでは行が複数に分割さ解き溶液(> 2)のラインである空行が保持されますが、トリミング、おかげで^ \ sの* $

+0

ありがとう、しかし、この '複数の'私には1000sに実行されます。これを自動化する方法はありますか? – Lazer

+0

これは私が探していたものです。 :gは解ではありません。私は自分の投稿を編集する。 –

1

;-)「

:1,$ join 

をハック

...これは単一のものへのファイルのすべての行に参加していますが、範囲を調整することができます」恥知らず「汚いです」
:s:;:&\r:g 

これはすべてを置き換えます。とともに ;と改行は

HTH

関連する問題