2010-05-21 46 views

回答

12

有我知道有兩種方法:

  • 設置文本寬度大的東西並重新格式化:

    :set tw=1000000 
    gggqG 
    
  • 使用替代品(如果你想這樣做的,這是比較合適的映射):

    :%s/.\zs\n\ze.//
    

說明後者的:

:%s  " Search and replace across the whole file 
/  " Delimiter 
.\zs\n\ze. " Look for a character either side of a new-line (so ignore blank lines). 
      " The \zs and \ze make the replacement only replace the new-line character. 
//  " Delimiters and replace the new-line with a space. 
+0

正則表達式的方法是種模糊。但是不錯。他tw = 方法贏得簡單 – sehe 2011-04-13 18:38:38

0

也許你應該將textwidth設置爲非常大的值(如99999999)(0不起作用),並使用gggqG

//我不能告訴你用:g重新格式化段落的方式,而不知道段落是什麼。也許別人可以。

2

如果你的文本段落是由空行分隔,這似乎工作:

:g!/^\s*$/normal vipJ 

:g全球(多重複)

!/^\s*$/匹配所有除了空白行和只包含空格的行之外。

normal進入 '正常' 模式

vip直觀地選擇內段

J聯接線

+0

+1:這是非常接近完美。 具有零個或多個空白字符的行也可以被認爲是空的。我建議'/^\ s * $ /'。 另外請注意':v'等價於':g!' 所以你可以把你的「vim par」降到17:':v/^ \ s * $/norm vipJ'。 – Johnsyweb 2010-05-21 14:10:12

+0

@Johnsyweb:很好。應該有一個'*'在那裏......我會更新它。感謝':v'提示。 – 2010-05-21 16:03:56

+0

我注意到,當行已經加入時它會給出錯誤的輸出。它刪除一條空行。這不是:'%s/\(\ S \ s * \)\ n \(\ s * \ S \)/ \ 1 \ 2' – Reman 2011-04-14 06:11:19

相關問題