2010-04-20 42 views
3

我經常需要編輯腳本文件,該文件的最後一行具有EOL標記的treats文件的解釋器作爲錯誤(即該文件將CRLF視爲「換行符」,而不是「行結束符」)。使用vim編輯文件,在最後一行沒有EOL標記但具有CRLF行尾

目前,我使用二進制模式在Vim中打開這些文件(在命令行中爲-b)。它會自動檢測最後一行缺少EOL,並適當設置「noeol」選項,從而防止在最後一行寫入EOL。由於該文件具有CRLF行結尾,因此我在行結尾處獲得了很多^M s(因爲它似乎僅在二進制模式下解釋了Unix樣式的行結尾)。我無法在文本模式下打開它,因爲對於非二進制文件忽略「noeol」選項。

這非常煩人,我總是要記住在每行的末尾手動輸入^M!有什麼辦法可以強制它在二進制模式下接受DOS風格的行結尾,或強制它在文本模式下聽取EOL選項?

回答

0

可以在編輯之前運行dos2unix命令嗎?

+0

我認爲這會破壞文件,但它似乎工作得很好。這根本不是一個理想的解決方案,我一直在尋求更好的答案,但我想一個人不會來......我會接受這一個,但如果它出現,我可能會選擇一個更好的答案。 – rmeador 2010-05-19 16:21:46

0

是的,你不應該在每一行都手動輸入一個^M;那會很乏味!嘗試進入這個:

:set ff=dos 

您也可能會發現這篇文章有用:change end-of-line format for dos-unix

在進一步審查中,全局搜索和替換可能是neccessary,所以這給了一槍。 (我測試了這個今天早些時候出來,它的工作在UNIX文件正在使用gvim的編輯在Windows XP,而不是二進制模式。)

:%s/^M//g 

鍵入命令完全按所示除了^M,這是一個特殊字符。你產生它的方式是按Ctrlv在一起然後點擊Enter(放棄之前擊中輸入CRTL + V)

+0

我知道爲文本文件設置文件格式爲DOS模式。它似乎不能在二進制模式下工作。我在打開文件並在命令行中使用--cmd後嘗試使用該命令。沒有任何影響。 – rmeador 2010-04-21 14:07:27

相關問題