vim中文亂碼的解決辦法

來源:互聯網
上載者:User

原文地址:http://www.cnblogs.com/joeyupdo/archive/2013/03/03/2941737.html

-----------

在vim中編輯一個中文文本時,有時候看起來有亂碼,以前都是修修補補的弄沒有亂碼了就不管了,這個問題一直都很困擾我。突然想到這個問題,於是想把它給解決掉,在網上查了許久,有很多這方面的資料,但是說得不是很到位,經過了一天的折騰,將vim卸載了很多次,也安裝了很多次,並做了一些小測試,今天終於搞定了。




1、下載


   可到http://www.vim.org/下載最新的7.3版本的vim源碼。




2、安裝


   在編譯之前,先要./configure --help查看一下配置選項, 
   其中這個配置需要加進來:--enable-multibyte      Include multibyte editing support


   其作用是支援多位元組編碼,這一步應該是很重要。不然後面的配置貌似沒什麼用,不知道我說得對不對^_^。


 


   在配置好了以後,自然是常規的:make 、make install了 
 


3、最後是vimrc的指令碼配置了


   編輯~/.vimrc檔案,加上如下幾行:


   set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
   set termencoding=utf-8
   set encoding=utf-8


   即可搞定。


 


順便記錄一下Vim編碼的詳細介紹


    Vim和所有的流行文字編輯器一樣,Vim 可以很好的編輯各種字元編碼的檔案,這當然包括 UCS-2、UTF-8 等流行的 Unicode 編碼方式。
    Vim 有四個跟字元編碼方式有關的選項,encoding、fileencoding、fileencodings、termencoding (這些選項可能的取值請參考 Vim 線上協助  :help encoding-names),它們的意義如下:
    (1)encoding: Vim 內部使用的字元編碼方式,包括 Vim 的 buffer (緩衝區)、菜單文本、訊息文本等。使用者手冊上建議只在 .vimrc 中改變它的值,事實上似乎也只有在 .vimrc 中改變它的值才有意義。
    (2)fileencoding: Vim 中當前編輯的檔案的字元編碼方式,Vim 儲存檔案時也會將檔案儲存為這種字元編碼方式 (不管是否新檔案都如此),網上是這樣介紹的,但是我這樣做在.vimrc中定義為utf-8似乎沒有作用,只能在開啟vim檔案時手動設定才會起效,不知道什麼原因。
    (3)fileencodings: Vim 啟動時會按照它所列出的字元編碼方式逐一探測即將開啟的檔案的字元編碼方式,並且將 fileencoding 設定為最終探測到的字元編碼方式。因此最好將 Unicode 編碼方式放到這個列表的最前面,將拉丁語系編碼方式 latin1 放到最後面。
    (4)termencoding: Vim 所工作的終端 (或者 Windows 的 Console 視窗) 的字元編碼方式。這個選項在 Windows 下對我們常用的 GUI 模式的 gVim 無效,而對 Console 模式的 Vim 而言就是 Windows 控制台的字碼頁,並且通常我們不需要改變它。


再來記錄一下 Vim 的多字元編碼方式支援是如何工作的。
    (1)Vim 啟動,根據 .vimrc 中設定的 encoding 的值來設定 buffer、菜單文本、訊息文的字元編碼方式。
    (2)讀取需要編輯的檔案,根據 fileencodings 中列出的字元編碼方式逐一探測該檔案編碼方式。並設定 fileencoding 為探測到看起來是正確的 字元編碼方式,如果沒有找到合適的編碼,就用latin-1(ASCII)編碼開啟。
    (3) 對比 fileencoding 和 encoding 的值,若不同則調用 iconv 將檔案內容轉換為 encoding 所描述的字元編碼方式,並且把轉換後的內容放到為此檔案開闢的 buffer 裡,此時我們就可以開始編輯這個檔案了。
    (4)編輯完成後儲存檔案時,再次對比 fileencoding 和 encoding 的值。若不同,再次調用 iconv 將即將儲存的 buffer 中的文本轉換為 fileencoding 所描述的字元編碼方式,並儲存到指定的檔案中。


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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.