vim裏面的編碼主要跟三個參數有關:enc(encoding)、fenc(fileencoding)、fence(fileencodings)linux
fenc是當前文件的編碼,也就是說,一個在vim裏面已經正確顯示了的文件(前提是你的系統環境跟你的enc設置匹配),你能夠經過改變fenc後再w來將此文件保存成不一樣的編碼。好比說,我:set fenc=utf-8,而後:w,就把文件保存成utf-8的了,:set fenc=gb18030,再:w,就把文件保存成gb18030的了。這個值對於打開文件的時候是否可以正確的解碼沒有任何關係。vim
fencs,是用來在打開文件的時候進行解碼的猜想列表。文件編碼沒有百分之百正確的判斷方法,因此vimwindows
只能猜想文件編碼。編碼
enc,其做用是顯示,無論最後的文件是什麼編碼的,vim都將其轉換爲當前系統編碼來進行處理,這樣才能在當前系統里正確的顯示出來,所以enc就是幹這個的。在windows下面,enc默認值是cp936,這也就是中文windows的默認編碼,因此enc是不須要改的。在linux下,隨着你的系統locale可能設爲zh_CH.gb18030或者zh_CH.utf-8,你的enc要對應的設爲gb18030或者utf-8(或者gbk之類的)。而本人遇到系統locale是en_US.UTF-8,不設置enc顯示不了中文,最後配置enc爲utf-8才能顯示。spa
最後給出linux編碼所有是UTF-8,vim能夠顯示中文的vimrc文件配置:code
set fileencodings=utf-8,gb2312,gbk,gb18030,big5 set fenc=utf-8 set enc=utf-8