vim、gvim 在 windows 下中文亂碼的終極解決方案
在windows
下vim
的中文字體顯示並不好, 所以我們需要調整字體顯示編碼為utf-8
, 只有這樣才能使用美觀的中文.
這時候可能出現很多中文亂碼. 如 : 文件顯示亂碼、菜單亂碼、右鍵菜單亂碼、conlse輸出亂碼、文件關聯右鍵菜單亂碼等等.
-
有個簡單的方法解決亂碼問題:刪除vim下的lang目錄。但這樣所有菜單只能顯示英文了
-
上面的方法終歸治標不治本, 經過嘗試, 總結下邊的代碼可以徹底解決這些問題。
" Gvim中文菜單亂碼解決方案 " 設置文件編碼格式 set encoding=utf-8 set fileencodings=utf-8,chinese,latin-1,gbk,gb18030,gk2312 if has("win32") set fileencoding=chinese else set fileencoding=utf-8 endif "解決菜單亂碼 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim "解決consle提示信息輸出亂碼 language messages zh_CN.utf-8
Vim 有四個跟字符編碼方式有關的選項,encoding、fileencoding、fileencodings、termencoding (這些選項可能的取值請參考 Vim 在線幫助 :help encoding-names),它們的意義如下:
選項 | 描述 |
---|---|
encoding | Vim 內部使用的字符編碼方式,包括 Vim 的 buffer (緩沖區)、菜單文本、消息文本等 |
fileencoding | Vim 中當前編輯的文件的字符編碼方式,Vim 保存文件時也會將文件保存為這種字符編碼方式 (不管是否新文件都如此) |
fileencodings | Vim 啟動時會按照它所列出的字符編碼方式逐一探測即將打開的文件的字符編碼方式,並且將 fileencoding 設置為最終探測到的字符編碼方式。因此最好將 Unicode 編碼方式放到這個列表的最前面,將拉丁語系編碼方式 latin1 放到最后面 |
termencoding | Vim 所工作的終端 (或者 Windows 的 Console 窗口) 的字符編碼方式。這個選項在 Windows 下對我們常用的 GUI 模式的 gVim 無效,而對 Console 模式的 Vim 而言就是 Windows 控制台的代碼頁,並且通常我們不需要改變它 |
用英文菜單和提示最好,可以免去下面對菜單和提示信息(B,C部分)的設置。如果用英文菜單和提示在安裝gvim的時候,將支持本地語言的選項去掉。