標籤:
轉載自:-楊博的日誌 - 網易部落格
Vim / gVim 在中文 Windows 下的字元編碼有兩個問題:
- 預設沒有編碼檢測功能
- 如果一個檔案本身採用的字元集比 GBK 大(如 UTF-8、UTF-16、GB18030),那麼其中無法在 GBK 中對應的字元都會出現亂碼,儲存時會丟失。即使編輯檔案時正確檢測出檔案格式也無濟於事。
第一個問題的解決辦法是在 ~/.vimrc 中加入以下配置:
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
第二個問題的解決辦法是強制要求 Vim 的內部編碼採用某種 UTF 編碼。比如 UTF-8:
set encoding=utf-8
但是,把 Vim 的內部編碼設為 UTF-8 會帶來以下新問題
- 使用非 GUI 介面的 vim 時會亂碼
- 提示資訊(比如
E492: 不是編輯器的命令: foo
)會亂碼
要解決非 GUI 介面的 vim 的亂碼問題,需要設定終端編碼為系統預設編碼:
set termencoding=cp936
而要讓提示資訊不亂碼則要需要使用 UTF-8 版本的提示資訊:
language messages zh_CN.UTF-8
綜上所述,在中文 Windows 下正確配置字元編碼,需要把以下內容加入你的 ~/.vimrc 中
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set encoding=utf-8
set termencoding=cp936
language messages zh_CN.UTF-8
特別提醒,以上代碼應該放在 .vimrc 的最頂端,因為 vim 運行過程中 set encoding=xxx
是很危險的,會導致各種亂碼(參見這裡)。我自己所用的完整 .vimrc 放在https://sites.google.com/site/popatry/etc/-vimrc,持續更新。
配置 .vimrc 解決 Vim / gVim 在中文 Windows 下的字元編碼問題