2016-03-14 26 views
1

我有一個由舊數據庫生成的文本文件,每個字段由一行組成,除記錄有多少字段外,記錄之間沒有分隔符。我想要做的是加入前N行,然後是下N個,依此類推。在Vim中有沒有辦法做到這一點?有沒有辦法根據任意VimL表達式(如line(".")%5==0)而不是僅僅使用正則表達式來選擇應用命令的命令行?加入N行組

+0

你需要任何特殊的分隔符,或者空格連接就夠了嗎? – sidyll

+0

以空間結合就夠了。 –

回答

5

有多種解決方法。首先是在我腦海中錄製宏,說註冊w

qw5Jjq 

這基本上使用J正常命令加入5日線和移動一個下來。然後你可以用一個簡單的[email protected]重複這個宏20次,或者繼續重複@@

另一個,也許更「正確」的方法是使用前:join命令,這是一樣的J正常命令,但可以縮寫爲:j和配合使用的:g在各行進行操作。例如:

:g/./j5 

這將匹配的每一行的非空行和在它們中的每一個,加入接下來的5行(含)。然後移動到下一行並加入更多5等等。

+0

我完全忘了ex-line'join'命令需要參數來加入的行數。所以':%j5'的作品,但我也應該意識到我可以做':%normal 5J'。不管怎樣,謝謝! –

+0

當然,你看,你的答案比我的好多了,我會編輯':g'的部分作爲將來的參考,謝謝你指出它,我完全錯過了它 – sidyll

+0

@MarkReed你可以多次加入' :%j5'?我認爲它只會執行給定範圍 – sidyll