vim的編碼選項
vim編碼涉及四個概念,分別是enc,fenc,fencs,tenc
,一般亂碼多是因這些引數設定不正確引起的,要想徹底擺脫vim的亂碼問題,還是把這四個概念理清楚了,下面詳細介紹之。
enc(encoding)
enc
的全稱為encoding
,這是vim內部使用的編碼,如buffer,暫存器中的字串。在vim開啟文字後,如果它的編碼方式與它的內部編碼不一致,vim會先把編碼轉換成內部編碼,如果它用的編碼中含有沒法轉換為內部編碼的字元,那麼這些字元就會丟失掉。預設值是系統的locale來決定的,比如在windows下一般就是gbk或gb2312的,而在linux下就是utf-8。可以用命令:set enc
檢視當前vim的enc是什麼值,筆者的windows顯示的是cp936
這裡的cp936其實相當於gb2312,指系統的第936號編碼格式。
fenc(fileencoding)
fenc為當前緩衝區(當前vim開啟這個檔案)檔案自身的編碼,從磁碟讀檔案時,vim會對檔案編碼檢查,如果檔案的編碼與vim內部編碼(enc)不同,vim就會對文字做編碼轉換,將fenc設定為檔案的編碼。vim寫檔案到磁碟時,如果enc與fenc不一樣,vim就做編碼轉換,轉換成編碼fenc儲存檔案。在windows下你可以藉由notepad++等編輯器檢查檔案是什麼編碼的。由於fenc是在開啟檔案時由vim自動檢測的,所以如果文章中有亂碼也沒法通過重新設定fenc來糾正,設定fenc只能改變文字的編碼格式。
fencs(fileencodings)
這是乙個字元編碼的列表,編碼的自動識別就是通過設定fencs實現的。當開啟乙個檔案時,vim會按照fencs中編碼的順序進行解碼操作,如果匹配成功就用該編碼來進行解碼,並把這種編碼設為fenc的值。這裡的匹配成功指的是vim能正確解碼,不會出錯,但是不保證沒有亂碼,所以fencs編碼列表的順序設定很關鍵,由於lanin1是iso8859-1,屬於國際化的標準編碼,他能表示任何字元,也就用於也不會出錯,但是我們看到的可以是「亂碼」。 所以一般fencs設定的順序是這樣子的:lan1放到最後面
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
tenc(termencoding)
終端使用文字編碼,或者說是vim用於螢幕顯示時的編碼,顯示的時候vim會把內部編碼轉換為螢幕編碼再輸出,也就是說我們從螢幕上看到的字元都是tenc編碼的字元,如果為空,預設就是enc。windows平台gvim會忽略掉tenc。一般就是從乙個終端遠端登陸到linux系統時候tenc會起作用。
亂碼問題
如果碰到了亂碼問題,只要你把enc,fenc統一設成utf-8問題都會解決了。下面這段配置就是我的vimrc檔案的關於解決亂碼配置的**段:
" 設定vim內部編碼格式
set encoding=utf-8
" 解決windows下如果encoding設定utf-8,選單會亂碼問題
set langmenu=zh_cn.utf-8
language message zh_cn.utf-8
source $vimruntime/delmenu.vim
source $vimruntime/menu.vim
"預設檔案編碼
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
參考: VIM編碼設定
vim編碼設定 vim裡面的編碼主要跟三個引數有關 enc encoding fenc fileencoding 和fencs fileencodings fenc是當前檔案的編碼,也就是說,乙個在vim裡面已經正確顯示了的檔案 前提是你的系統環境跟你的enc設定匹配 你可以通過改變 fenc後再w...
vim編碼設定
於 對於fedora來說,vim的設定一般放在 etc vimrc檔案中,不過,建議不要修改它。可以修改 vimrc檔案 預設不存在,可以自己新建乙個 寫入所希望的設定。我的.vimrc檔案如下 setencoding utf 8 setfileencodings ucs bom,utf 8,cp9...
vim 設定編碼格式
本文主要講解下,讓vim能正確顯示和儲存各種編碼檔案的一些常用方法。vim編碼配置裡面有3個選項,分別是encoding fileencodings fileencoding簡寫分別對應為enc fencs fenc。encoding enc 此專案配置的是vim的預設顯示編碼,如果你開啟的檔案編碼...