windows下的dos窗口下vim 亂碼解決

windows下在DOS窗口運行vim亂碼

======================================
按照經驗,設置:encoding, fileencoding,fileencodings就可以解決亂碼,但這三個我都設置了,還是亂碼。
在gvim中不亂碼!!

解決方法:
vim中有四個與編碼有關的選項。
一、encoding
encoding是vim內部使用的字符編碼,當我們設置了encoding之後,vim內部所有的buffer,寄存器,腳本中的字符串等,全都使用這個編碼。
vim在工作時,如果編碼方式與它的內部編碼不一致,它會先把編碼轉換成內部編碼,這樣會出現有些字符無法轉換,造成字符丟失。而utf8的範圍是非常大的,很適合。但在windows這樣非utf8字符系統下,菜單和系統提示會亂碼,所以需要添加:
set encoding=utf-8
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8

二、termencoding
這個是vim用於屏幕的編碼,在顯示的時候,vim把內部編碼轉成屏幕編碼,再用於輸出,如果轉換失敗顯示,但不影響對它的編輯動作。
*******************************************
我的問題是:gvim不亂碼,但vim亂碼就是這個問題,設置一下:
set termencoding=cp936
這樣就搞定了。圖形界面的gvim不依賴於終端,所以會忽略termencoding,這就是在windows虛擬DOS窗口下運行vim亂碼的原因。

三、fileencoding
當vim從磁盤上讀取文件時,會對文件的編碼進行探測。如果文件的編碼方式和vim的內部編碼方式不同,vim就會對編碼進行轉換。完成後,vim將fileencoding選項設置爲文件的編碼。當vim存盤時,如果encoding與fileencoding不一樣,則會進行轉換之後保存。

四、fileencodings
fileencodings,注意是複數,編碼的自動識別通過設置fileencodings實現的,他會根據設置的依次檢測編碼類型,建議設置:
setfileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
發佈了23 篇原創文章 · 獲贊 19 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章