2008-12-24 18 views
49

我想將一個文件中的所有行合併成一行。這樣做的最簡單方法是什麼?我嘗試使用替代品(\r\n\n似乎無法在Windows上的s/\r\n//的情況下正確拾取)運行失敗。在範圍表達式中使用J似乎也不起作用(可能是因爲在執行第一個命令後範圍不再處於「同步」狀態)。在Vim中,將文件中所有行加入單行的最簡單方法是什麼?

我試過:1,$norm! J但這隻做了一半的文件 - 這是有道理的,因爲它只是連接每一行一次。

+0

另請參閱「[如何刪除文件中每行的'\ n'](http://stackoverflow.com/q/6868335/254635)」。 – 2012-04-08 02:18:04

回答

55

啊,我找到了答案。

:1,$join 

工程就像一個魅力。

編輯:正如在評論中指出:

:%join -or- :%j 

...刪除範圍。

+0

這也可以寫成: :%join – 2008-12-24 17:00:01

+5

或簡寫爲:%j – 2008-12-24 17:26:58

+3

您可能還想使用gJ操作而不是j。 gJ操作在不插入或刪除任何空格的情況下連接行。 – 2008-12-24 21:38:20

125

另一種方式:

ggVGJ 

ggVG」 視覺選擇所有的線條,以及 「J」 加入他們。

12

你可以做到這三個較少的按鍵:

:1,$j 

是不是盛大?

8

我很驚訝,甚至沒有人提到的另一種方式:

:%s/\n//

我同樣驚訝的是,沒有一個人指出範圍1,$有一個是寫%的簡寫。

(這與加入行不同,但取決於實際情況可能更合適的情況。)

28

您可以用3個按鍵從正常模式開始做:

:%j 
  • :進入命令行模式
  • %是指所有線路的文件
  • j執行join命令

現在看來,這增加了一個溫泉線之間。我不確定你是否想要這個。

相關問題