vim 字元編碼

2022-08-17 05:33:19 字數 1583 閱讀 1207

一般的,vim開啟中文檔案時會出現亂碼,原因比較複雜,不羅嗦了。直接講解決辦法

set fileencoding=gb18030

set fileencodings=utf-8,gb18030,utf-16,big5

想看這樣設定的原因嗎?請繼續。下文在網路中廣泛流傳

vim裡面的編碼主要跟三個引數有關:enc(encoding), fenc(fileencoding)和fencs(fileencodings)

其中fenc是當前檔案的編碼,也就是說,乙個在vim裡面已經正確顯示了的檔案(前提是你的系統環境跟你的enc設定匹配),你可以通過改變

fenc後再w來將此檔案存成不同的編碼。比如說,我:set fenc=utf-8然後:w就把檔案存成utf-8的了,:set

fenc=gb18030再:w就把檔案存成gb18030的了。這個值對於開啟檔案的時候是否能夠正確地解碼沒有任何關係。

fencs就是用來在開啟檔案的時候進行解碼的猜測列表。檔案編碼沒有百分百正確的判斷方法,所以vim只能猜測檔案編碼。比如我的vimrc裡面這個的設定是

set fileencodings=utf-8,gb18030,utf-16,big5

所以我的vim每開啟乙個檔案,先嘗試用utf-8進行解碼,如果用utf-8解碼到了一半出錯(所謂出錯的意思是某個地方無法用utf-8正確地

解碼),那麼就從頭來用gb18030重新嘗試解碼,如果gb18030又出錯(注意gb18030並不是像utf-8似的規則編碼,所以所謂的出錯只是

說某個編碼沒有對應的有意義的字,比如0),就嘗試用utf-16,仍然出錯就嘗試用big5。這一趟下來,如果中間的某次解碼從頭到尾都沒有出錯,那麼

vim就認為這個檔案是這個編碼的,不會再進行後面的嘗試了。這個時候,fenc的值就會被設為vim最後採用的編碼值,可以用:set

fenc?來檢視具體是什麼。

當然這個也是有可能出錯的,比如你的檔案是gb18030編碼的,但是實際上只有一兩個字元是中文,那麼有可能他們正好也能被utf-8解碼,那麼這個檔案就會被誤認為是utf-8的導致錯誤解碼。

至於enc,其作用基本只是顯示。不管最後的檔案是什麼編碼的,vim都會將其轉換為當前系統編碼來進行處理,這樣才能在當前系統裡面正確地顯示出

來,因此enc就是幹這個的。在windows下面,enc預設是cp936,這也就是中文windows的預設編碼,所以enc是不需要改的。在

linux下,隨著你的系統locale可能設為zh_cn.gb18030或者zh_cn.utf-8,你的enc要對應的設為gb18030或者

utf-8(或者gbk之類的)。

最後再來說一下新建空檔案的預設編碼。看文件好像說會採用fencs裡面的第乙個編碼作為新建檔案的預設編碼。但是這裡有乙個問題,就是fencs

的順序跟解碼成功率有很大關係,根據我的經驗utf-8在前比gb18030在前成功率要高一些,那麼如果我新建檔案預設想讓它是gb18030編碼怎麼

辦?乙個方法是每次新建檔案後都:set fenc=gb18030一下,不過我發現在vimrc裡面設定fenc=gb18030也能達到這個效果。

另外,在

ubuntu

中文論壇還

有人參考連線:

vim字元編碼

setencoding utf 8 setfileencodings ucs bom,utf 8,cp936 setfileencoding gb2312 settermencoding utf 8 設定好之後檔案正常顯示 在網頁中顯示 但當我再次開啟此檔案的時候,又出現了開啟之後亂碼的問題。解決方...

vim字元編碼設定

和所有的流行文字編輯器一樣,vim 可以很好的編輯各種字元編碼的檔案,這當然包括ucs 2 utf 8 等流行的 unicode 編碼方式。然而不幸的是,和很多來自 linux 世界的軟體一樣,這需要你自己動手設定。好了,解釋完了這一堆容易讓新手犯糊塗的引數,我們來看看 vim 的多字元編碼方式支援...

vim字元編碼設定

對於fedora來說,vim的設定一般放在 etc vimrc檔案中,不過,建議不要修改它。可以修改 vimrc檔案 預設不存在,可以自己新建乙個 寫入所希望的設定。我的.vimrc檔案如下 set encoding utf 8 set fileencodings ucs bom,utf 8,cp9...