2013-01-06 87 views
4

我想要更改所有文件的fileformat。如何設置fileformat = unix所有文件在vim中打開?

所以我打開它們使用vim *

然後我想知道是否有任何簡單的方法來做到這一點,而不是爲每個文件一個一個地輸入:set fileformat=unix:w

+1

也許你可以使用dos2unix所有你的文件在shell中首先 –

+0

@HowChen:謝謝你提供這個命令。但我也想做如何對vim中所有打開的文件執行相同的操作。 – pktangyue

+0

你爲什麼想通過vim做到這一點?爲什麼比用'dos2unix'在shell中做得更好? –

回答

2

也許您需要bufdo

:help bufdo 
bufdo[!] {cmd}  Execute {cmd} in each buffer in the buffer list. 
It works like doing this: 
       :bfirst 
       :{cmd} 
       :bnext 
       :{cmd} 
       etc. 
+0

謝謝。我發現其他類似的命令,如:windo:tabo:argdo。 – pktangyue

+0

一個很好的例子 – elysch

+0

你可以這樣做:':bufdo set ff = dos | w' – elysch

10

argdo是你想要什麼,而不是bufdo,既然你想這樣做的每一個參數,你不(一定)要首先打開每個文件。

:argdo set ff=unix | update 

應該這樣做。

+1

有關詳細信息,請參閱http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix –

4

當然,你可以使用vim記錄和播放功能來做到這一點。請按照下列步驟操作

1. Open all files using vim * 
2. Press "qq" to start recording 
3. :set ff=unix 
4. :wn 
5. Press again "q" to stop recording 
6. Execute like "[email protected]" 

這裏100是文件的大概數量,但不要擔心,如果您再給出更多數字。當它完成所有緩衝區,說「E165:不能超越最後一個文件」時它會停止。在打開之前,您可以通過執行「ls | wc -l」來獲取文件的編號。

+0

或簡單地使用':bufdo set ff = dos | w' – elysch

+0

@sarath這是一個古老的線程,但是你讓我知道這種方法將所有緩衝區應用到某個東西上,這爲我的寶貴生活節省了一個(或者兩個)天,並且確保了無錯誤。好消息應該傳播給整個人類。 – Aminopterin

+0

很高興聽到:) – sarath

相關問題