Vim中文亂碼問題之這次一定要記下來

Vim無疑是世間最強的編輯器(之一)了,但是強大的代價有時候就是必須要花上更多的功夫來應付。中文的編碼問題無疑是中文用戶值得一提的一個典型問題了,作爲老用戶的我爲此曾經狠狠的中槍過三次,到了最近這一次,我決定要好好的寫下來,爲了記憶日漸衰退的自己留下一點方便查找的記錄了。

大概七八年前吧,那時候還對Vim不算熟悉,剛從UE轉投而來的我,當頭就吃了一記悶棍,花了好大的功夫才理解了原來還有用戶自己搗鼓好文件編碼這回事情,到處查找之後,算是得到了如下的一點知識:

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

這些配置在網上隨便一查,就不難理解:

encoding用來指導Vim理解自己內部處理和顯示的缺省編碼;

fileencodings則是決定Vim識別文件編碼格式的識別序列,應當按照從嚴格到寬鬆的角度來擺放;

fileencoding設置文件保存時的編碼格式;

於是,在這樣一個配置的加持下,我無風無雨的渡過了好幾年的Vim使用——正當我志得意滿,自以爲對Vim已經比較瞭解的情況下,兩年前有次在Linux下Term中使用Vim過程中卻遇到了久違的亂碼,當我試了好幾次都無法解決之後,才終於開始滿世界的尋求解決(過程中,甚至萌生過轉投其他編輯器的想法),在數次絕望之後終於找到了原因,依賴於「termencoding」這個參數指導的term側的顯示終於的得到了解決,至此我以爲萬事大吉,甚至把Vimrc都留檔備份,準備以後千秋萬代了:

set termencoding=gbk

好吧,高潮在後頭,就在最近剛剛裝了個新機器,英文版的Windows7,Vim7.4——然後,赫然發現方塊亂碼又出現了!我各種掙扎和搜索,都沒有找到原因,再次絕望之際,一篇小小的文章卻告訴我,原來我一直以爲還是編解碼識別導致的問題,實際上卻是貨真價實的顯示問題罷了——英文Windows下的Vim不知道如何顯示雙倍字符寬度的字體!你必須告訴它:

set gfn=Monaco:h10:cANSI
set gfw=NSimsun:h12

如上,設置了英文字體使用Monaco,中文字體用NSimsun,至此,才徹底搞定了這個問題。

果真,我生有涯而學無涯啊,希望以後不要再折騰這個了……

本文轉自:http://jianshu.io/p/Rww1Tp

發佈了48 篇原創文章 · 獲贊 20 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章