2012-07-19 28 views
1

在交互式編輯Vim緩衝區時,如何通過單個替換命令將單個空行替換爲多個空行(真空或包含可選空白行) - 最好不要從非空行刪除任何尾隨空白...?在Vim交互式會話中摺疊空行

當然,這樣的多個「空」行塊可能存在於緩衝區中的任何地方,包括緩衝區的最開始和最末尾。

因爲我只是想追蹤Vim處理正則表達式的方式中可能存在的誤解,所以涉及某種形式或其他迭代的解決方案(Vim的「:global」命令,宏,函數..等)是不是我在找什麼。


我需要解決一個錯字,所以我用CTRL-H,試圖修復它..一個奇怪的事情發生:-) 當我按下回車鍵進入到下一行,不管我輸入的內容是 ,我必須使用編輯按鈕來添加內容。 @kev:非常有趣 解決方案和我有很多問題..但我甚至不能回覆你的 的帖子..我剛剛發現我的「名聲」是不夠的..所以你必須等到 我找到了一種方法來改變..!我不認爲我可以通過一個普通的郵件列表 使用這個論壇。我只注意到我有-176 人物離開..因此,我最初的努力被截斷..呵呵,好..

回答

3

您可以使用多行模式:

:%s/^\_s*$// 

\_s匹配空間(包括新行)

+1

也許你應該用'\ r'替代而不是刪除它們......只是爲了配合這個問題。 – sidyll 2012-07-20 01:41:19

+1

@sidyll這個命令將會將一個空行縮小到一個。添加'\ r'會產生兩個空行。 – kev 2012-07-20 05:34:40

+0

哦,是的,你是對的。這種作品「線條」。抱歉。 – sidyll 2012-07-20 15:02:24

0

@xev ..你沒有回答這個問題。你的替代命令尋找 空行,它將它們替換爲//,換句話說就是沒有!

您正在刪除行而不是將其摺疊。

如果你覺得這是不是這樣的,只是通過實例,然後串破折號改變//在替代 命令..

:%s/^\_s*$/----------/ 

你會注意到,所有的空行獲得十取代破折號!

也許你正在運行一個老版本的Vim?

如果不是,請解釋您認爲它應該如何工作。