VIM編碼

在 Linux 上,常見的情況是環境的內部編碼使用 UTF-8 ,而 UTF-8 可以同任何一種語言編碼作無損轉換,這就保證了系統的多語言處理能力。Vim 這方面秉承了 Unix/Linux 的傳統,在內部編碼使 UTF-8 的時候,可以同時處理不同意語言編碼的文件。

以下列出了和語言編碼的相關的設置:

環境變量 LANG所有語言變量的默認值);

環境變量 LC_CTYPE(使用的內部編碼);

環境變量 LANGUAGE(界面語言)

Vim 選項 encodingVim 的內部編碼);

Vim 選項 termencodingVim 在與屏幕/鍵盤交互時使用的編碼);

Vim 選項 fileencodingVim 當前編輯的文件在存儲時的編碼);

Vim 選項 fileencodingsVim 打開文件時的嘗試使用的編碼);

Vim 選項 ambiwidth不明寬度字符的處理方式);

如果按照目前 Linux 下的慣例,內部編碼一律使用 UTF-8 的話,會有一些額外的好處,其中之一就是在這種情況下 Vim 支持同時編輯多種不同編碼的文件,如簡體中文和繁體中文。這樣,衆多關於語言編碼的 Vim 選項就有了用武之地了。下面進一步說明一下這些選項和推薦設定(如果適用的話):encoding=utf-8:不管文件的編碼如何,不管如何顯示和輸入,Vim 內部使用的編碼是 UTF-8;這是國際化支持的基礎。

termencoding取決於實際的終端或 X Window 的設定。舉例來說,如果選擇語言簡體中文登錄到 X Window,或者正在使用 CXTERM [10] 的話,那麼該選項應被設爲 GB2312;如果使用缺省的語言(LANG=en_US.UTF-8)登錄到 X Window,該選項就應該設爲 utf-8。從 Windows 下使用 PuTTY 遠程連接 Linux 的請特別注意,測試表明,僅在使用 UTF-8 的情況下,PuTTY 才能可靠地支持中文的顯示和輸入(顯示字體必須設成中文字體)。

fileencoding文件載入時,該選項被置爲 Vim 認定的文件編碼,因此,存儲時文件的編碼不會改變。此處和下面 fileencodings 可使用的編碼爲 libiconv 支持的所有幾百種編碼(如果編譯時包含了 iconv 特性的話),與中文相關的有 gb2312gbkgb18030hz-gb-2312iso-2022-cnbig5cp936cp950 等。如果創建新文件,你又不希望使用 UTF-8 作爲文件編碼時,那麼,你可能需要手工設定該選項,如“:set fileencoding=gb2312”。需要注意的一點是,使用“set”來設定該選項的話會改變以後新建文件的缺省編碼,而使用“setlocal”的話則隻影響當前文件(參考“:help setlocal”)。

fileencodings=ucs-bom,utf-8,chineseVim 會首先判斷文件的開頭是否是一個 Unicode [7] 的 BOMbyte order mark)字符 [8],是的話則把文件的其餘內容解釋成相應的 Unicode 序列;否的話再試圖把文件內容解釋成 UTF-8 的序列;再失敗的話,則把文件解釋爲簡體中文(chinese 是一個跨平臺的簡體中文字符集的別名,Linux 下相當於 gb2312 和 euc-cn;此處也可以根據需要以 gb2312gbk 或 gb18030 等編碼替代)。需要注意的是,該順序不能顛倒,並且在後面再添加其它編碼如 big5latin1 也是沒有意義的,因爲 Vim 不能識別 比特編碼中的錯誤,因此這些編碼後列的編碼永遠不會被用到。

ambiwidth=double:把所有的不明寬度字符 [9]——指的是在 Unicode 字符集中某些同時在東西方語言中使用的字符,如省略號、破折號、書名號和全角引號,在西方文字中通常字符寬度等同於普通 ASCII 字符,而在東方文字中通常字符寬度等同於兩倍的普通 ASCII 字符,因而其寬度不明”——的寬度置爲雙倍字符寬度(中文字符寬度)。此數值只在 encoding 設爲 utf-8 或某一 Unicode 編碼時纔有效。需要額外注意的是,如果你通過終端使用 Vim 的話,需要令終端也將這些字符顯示爲雙寬度。

需要設定的選項通常放在用戶的 Vim 資源配置文件中,即在 ~/.vimrc 文件中加入:

set encoding=utf-8

set fileencoding=chinese

set fileencodings=ucs-bom,utf-8,chinese

set ambiwidth=double

在使用內部編碼 UTF-8 的情況下,如需編輯 fileencodings 之外(其不能自動識別)的文件,則可以使用以下命令:“:e ++enc=編碼 文件名。詳情可參考“:help ++enc”

關於系統的環境設置詳見:http://blog.csdn.net/xinhanggebuguake/article/details/8627857

關於VIM的編碼選項的關係可表述如下圖:

                                        

   修改自http://www.ibm.com/developerworks/cn/linux/l-tip-vim1/index.html

發佈了147 篇原創文章 · 獲贊 25 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章