解決vim亂碼

2021-06-09 03:32:47 字數 2311 閱讀 9607

**

現在多數linux發行版預設都使用utf8編碼,如果在xwindows下開啟用gb231 2或者gb18030編碼儲存的檔案就會發現檔案內容都是亂碼 ,解決辦法:

使用者目錄下建立.vimrc檔案

加入set fileencodings=utf-8,gb2312,gbk,gb18030

set termencoding=utf-8

set fileformats=unix

set encoding=prc

fileencodings中utf-8要在前面。

這樣就能正常顯示中文了。

親測有效。。

拓展:vim 可以很好的編輯各種字元編碼的檔案,包括 ucs-2、utf-8 等流行的 unicode 編碼方式:

vim 有四個跟字元編碼方式有關的選項,encoding、fileencoding、fileencodings、termencoding,它們的意義如下:

* encoding: vim 內部使用的字元編碼方式,包括 vim 的 buffer (緩衝區)、選單文字、訊息文字等;

* fileencoding: vim 中當前編輯的檔案的字元編碼方式,vim 儲存檔案時也會將檔案儲存為這種字元編碼方式 (不管是否新檔案都如此);

* fileencodings: vim 啟動時會按照它所列出的字元編碼方式逐一探測即將開啟的檔案的字元編碼方式,並且將 fileencoding 設定為最終探測到的字元編碼方式。因此最好將 unicode 編碼方式放到這個列表的最前面,將拉丁語系編碼方式 latin1 放到最後面;

* termencoding: vim 所工作的終端 (或者 windows 的 console 視窗) 的字元編碼方式。

vim 的多字元編碼的工作方式:

1. vim 啟動,根據 .vimrc 中設定的 encoding 的值來設定 buffer、選單文字、訊息文的字元編碼方式;

2. 讀取需要編輯的檔案,根據 fileencodings 中列出的字元編碼方式逐一探測該檔案編碼方式。並設定 fileencoding 為探測到的,看起來是正確的 (注1) 字元編碼方式;

3. 對比 fileencoding 和 encoding 的值,若不同則呼叫 iconv 將檔案內容轉換為 encoding 所描述的字元編碼方式,並且把轉換後的內容放到為此檔案開闢的 buffer 裡,此時我們就可以開始編輯這個檔案了。注意,完成這一步動作需要呼叫外部的 iconv.dll (注2),你需要保證這個檔案存在於 $vimruntime 或者其他列在 path 環境變數中的目錄裡;

4. 編輯完成後儲存檔案時,再次對比 fileencoding 和 encoding 的值。若不同,再次呼叫 iconv 將即將儲存的 buffer 中的文字轉換為 fileencoding 所描述的字元編碼方式,並儲存到指定的檔案中。同樣,這需要呼叫 iconv.dll。

由於 unicode 能夠包含幾乎所有的語言的字元,而且 unicode 的 utf-8 編碼方式又是非常具有價效比的編碼方式 (空間消耗比 ucs-2 小),因此建議 encoding 的值設定為 utf-8。這麼做的另乙個理由是 encoding 設定為 utf-8 時,vim 自動探測檔案的編碼方式會更準確 (或許這個理由才是主要的 ;)。我們在中文 windows 裡編輯的檔案,為了兼顧與其他軟體的相容性,檔案編碼還是設定為 gb2312/gbk 比較合適,因此 fileencoding 建議設定為 chinese (chinese 是個別名,在 unix 裡表示 gb2312,在 windows 裡表示 cp936,也就是 gbk 的**頁)。

注1: 事實上,vim 的探測準確度並不高,尤其是在 encoding 沒有設定為 utf-8 時。因此強烈建議將 encoding 設定為 utf-8,雖然如果你想 vim 顯示中文選單和提示訊息的話這樣會帶來另乙個小問題。

注3: 檢視幫助 :h iconv-dynamic。

注4: 前方中提到的.vimrc在windows下為_vimrc,存在於vim安裝目錄下。

以下為在windows下gvim7.2地配置檔案_vimrc,使用此配置可解決安裝中文版vimdoc後出現的選單、控制台資訊等亂碼現象。

set encoding=utf-8

set fileencodings=utf-8,chinese,latin-1

if has("win32")

set fileencoding=chinese

else

set fileencoding=utf-8

endif

source $vimruntime/delmenu.vim

source $vimruntime/menu.vim

language messages zh_cn.utf-8

解決vim亂碼

使用vim開啟含中文的檔案時,由於配置不當,就會出現亂碼.遇到這種情況,不要慌.把下面的設定,放到你的vimrc中 set fencs utf 8,chinese,latin1 fenc utf 8 enc utf 8多個配置,可以寫在一行,只需要寫乙個set即可.下文詳細分析這條配置.我使用的是u...

vim中文亂碼分析解決

vim裡面的編碼主要跟三個引數有關 enc encoding fenc fileencoding 和fencs fileencodings 其中fenc是當前檔案的編碼,也就是說,乙個在vim裡面已經正確顯示了的檔案 前提是你的系統環境跟你的enc設定匹配 你可以通過改變 fenc後再w來將此檔案存...

vim中文亂碼的解決方法

編輯 vimrc檔案,加上如下幾行 set fileencodings utf 8,ucs bom,gb18030,gbk,gb2312,cp936 set termencoding utf 8 set encoding utf 8 即可搞定。順便記錄一下vim編碼的詳細介紹 vim和所有的流行文字...