我想將一個文件中的所有行合併成一行。這樣做的最簡單方法是什麼?我嘗試使用替代品(\r\n
或\n
似乎無法在Windows上的s/\r\n//
的情況下正確拾取)運行失敗。在範圍表達式中使用J
似乎也不起作用(可能是因爲在執行第一個命令後範圍不再處於「同步」狀態)。在Vim中,將文件中所有行加入單行的最簡單方法是什麼?
我試過:1,$norm! J
但這隻做了一半的文件 - 這是有道理的,因爲它只是連接每一行一次。
我想將一個文件中的所有行合併成一行。這樣做的最簡單方法是什麼?我嘗試使用替代品(\r\n
或\n
似乎無法在Windows上的s/\r\n//
的情況下正確拾取)運行失敗。在範圍表達式中使用J
似乎也不起作用(可能是因爲在執行第一個命令後範圍不再處於「同步」狀態)。在Vim中,將文件中所有行加入單行的最簡單方法是什麼?
我試過:1,$norm! J
但這隻做了一半的文件 - 這是有道理的,因爲它只是連接每一行一次。
啊,我找到了答案。
:1,$join
工程就像一個魅力。
編輯:正如在評論中指出:
:%join -or- :%j
...刪除範圍。
這也可以寫成: :%join – 2008-12-24 17:00:01
或簡寫爲:%j – 2008-12-24 17:26:58
您可能還想使用gJ操作而不是j。 gJ操作在不插入或刪除任何空格的情況下連接行。 – 2008-12-24 21:38:20
另一種方式:
ggVGJ
「ggVG
」 視覺選擇所有的線條,以及 「J
」 加入他們。
你可以做到這三個較少的按鍵:
:1,$j
是不是盛大?
我很驚訝,甚至沒有人提到的另一種方式:
:%s/\n//
我同樣驚訝的是,沒有一個人指出範圍1,$
有一個是寫%
的簡寫。
(這與加入行不同,但取決於實際情況可能更合適的情況。)
您可以用3個按鍵從正常模式開始做:
:%j
:
進入命令行模式%
是指所有線路的文件j
執行join命令現在看來,這增加了一個溫泉線之間。我不確定你是否想要這個。
另請參閱「[如何刪除文件中每行的'\ n'](http://stackoverflow.com/q/6868335/254635)」。 – 2012-04-08 02:18:04