如何將 VIM 的預設編碼設置為 UTF-8?
我想為一個提供翻譯字元串的開源項目做出貢獻。他們的要求之一是貢獻者必須使用 UTF-8 作為 PO 文件的編碼。
我在 Linux 上使用 VIM 7.3。如何確定 VIM 的編碼設置為 UTF-8,以便我可以以正確的方式編輯和保存 .po 文件?
當 Vim 讀取現有文件時,它會嘗試檢測文件編碼。當寫出文件時,Vim 使用它檢測到的文件編碼(除非你以不同的方式告訴它)。因此,檢測為 UTF-8 的文件寫為 UTF-8,檢測為 Latin-1 的文件寫為 Latin-1,以此類推。
預設情況下,檢測過程是粗略的。你用 Vim 打開的每個文件都將被假定為 Latin-1,除非它在頂部檢測到 Unicode 字節順序標記。沒有字節順序標記的 UTF-8 文件將難以編輯,因為任何多字節字元都將在緩衝區中顯示為字元序列而不是單個字元。
更糟糕的是,Vim 預設使用 Latin-1 來表示緩衝區中的文本。因此,帶有字節順序標記的 UTF-8 文件將被下轉換為 Latin-1 損壞。
解決方案是將 Vim 配置為在內部使用 UTF-8。事實上,這是在 Vim 文件中推薦的,並且沒有以這種方式開箱即用的配置的唯一原因是避免在希望 Vim 基本上作為 Latin-1 編輯器執行的使用者之間造成巨大的混亂。
在你的
.vimrc
中,添加set encoding=utf-8
並重新啟動 Vim。或者,設置
LANG
環境變數以指示 UTF-8 是您首選的字元編碼。這不僅會影響 Vim,還會影響任何依賴於LANG
確定它應該如何表示文本的軟體。例如,要指示文本應以英語 (en
) 顯示,如美國所說 (US
),編碼為 UTF-8 (utf-8
),請設置LANG=en_US.utf-8
.現在 Vim 將使用 UTF-8 來表示緩衝區中的文本。此外,它還將更加堅定地檢測文件中的 UTF-8 編碼。除了尋找字節順序標記外,它還會在返回到 Latin-1 之前檢查沒有字節順序標記的 UTF-8。因此它不會再損壞以 UTF-8 編碼的文件,並且它應該在編輯會話期間正確顯示 UTF-8 字元。
有關 Vim 如何檢測文件編碼的更多資訊,請參閱Vim 文件中的
fileencodings
選項。有關設置 Vim 內部使用的編碼的更多資訊,請參閱
encoding
選項.如果您需要覆蓋將文件寫回磁碟時使用的編碼,請參閱
fileencoding
選項.