配置 .vimrc 解決 Vim / gVim 在中文 Windows 下的字符編碼問題

轉載自:-楊博的日誌 - 網易博客 html

Vim / gVim 在中文 Windows 下的字符編碼有兩個問題: vim

  1. 默認沒有編碼檢測功能
  2. 若是一個文件自己採用的字符集比 GBK 大(如 UTF-八、UTF-1六、GB18030),那麼其中沒法在 GBK 中對應的字符都會出現亂碼,保存時會丟失。即便編輯文件時正確檢測出文件格式也無濟於事。

第一個問題的解決辦法是在 ~/.vimrc 中加入如下配置:編輯器

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

第二個問題的解決辦法是強制要求 Vim 的內部編碼採用某種 UTF 編碼。好比 UTF-8:google

set encoding=utf-8

可是,把 Vim 的內部編碼設爲 UTF-8 會帶來如下新問題 編碼

  1. 使用非 GUI 界面的 vim 時會亂碼
  2. 提示信息(好比E492: 不是編輯器的命令: foo)會亂碼

要解決非 GUI 界面的 vim 的亂碼問題,須要設置終端編碼爲系統默認編碼:.net

set termencoding=cp936

而要讓提示信息不亂碼則要須要使用 UTF-8 版本的提示信息:日誌

language messages zh_CN.UTF-8

綜上所述,在中文 Windows 下正確配置字符編碼,須要把如下內容加入你的 ~/.vimrc 中code

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,持續更新。htm

相關文章
相關標籤/搜索