歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> VIM 中文亂碼解決方法

VIM 中文亂碼解決方法

日期:2017/2/28 14:54:15   编辑:Linux教程

我剛來公司的時候,發現公司的 Linux 開發環境沒有配置中文,因為絕大多數同事都是在 VC/SourceInsight/UltraEdit上編輯後sz到服務器上編譯,所以沒人在意這個問題。而我習慣於在 vim 下直接寫代碼,很不習慣,就搞了一下。

首先讓 vim 支持中文,這個修改配置即可,但是沒想到後來那麼麻煩。

一開始嘗試統一設置為 en_US.UTF-8,SecureCRT 的編碼也設置為 UTF-8,vim 好了,但是 cat 和 more GB 編碼的文件時會亂碼。

設置為 en_US.ISO8859-1,cat 和 more 好了,vim 又不行了。

很奇怪 vim 的 fileencoding 裡面設置了檢測中文的選項,

set fileencodings=utf-8-bom,ucs-bom,utf-8,cp936,gb18030,ucs,big5

為什麼不起作用呢?後來明白了 UTF-8 本身能夠兼容中文,所以 vim 不管語言是不是中文,vim 都會進行中文的檢測,而語言設置為 en_US,編碼不是 UTF-8 的時候,則認為環境不支持中文,直接忽略 fileencodings 裡的cp936,gb18030等中文編碼。

這就好辦了。

因為我們的系統大部分還都是 GB 編碼,而 cat 和 more 又不會進行編碼的自動識別和轉換。但是 vim 會,因此就委屈一下 vim,全局依然用 GB 編碼。

具體操作:

編輯 ~/.profile,加入:

export LC_CTYPE=zh_CN.GB18030

編輯 ~/.vimrc,確認含有:

set fileencodings=utf-8-bom,ucs-bom,utf-8,cp936,gb18030,ucs,big5

這個順序比較好,能准確識別的優先放前面。

然後 vim 就能正確識別中文了,不會出現亂碼和半個漢字的問題。

如果要全中文,就用:

export LC_ALL=zh_CN.GB18030

取代

export LC_CTYPE=zh_CN.GB18030

這樣終端的錯誤信息和gcc錯誤信息都是中文的了,cat 和 more GB 編碼的文件也很正常了。

這個問題涉及到好幾個方面:文件本身的編碼終端的語言vim的中文支持vim的編碼檢測轉換和輸出SecureCRT的編碼

所以實際上還是挺復雜的,一環錯了都出不來效果。

現在編碼問題算是比較完美地解決了,生活真美好……

Copyright © Linux教程網 All Rights Reserved