2010年9月6日 星期一

vim 的 encoding

好久之前,工作上就是一直使用big5。反正也相安無事,也沒有覺得有什麼不對。


直到前陣子,發現,big5相當的不方便。尤其遇到其他語言的時候。

編碼問題說無法處理嘛,是也還好。

不過一直要面對不斷的改編碼倒也是挺惱人的。

於是就在vim裡面改了編碼,*以後*寫東西就用utf8,一勞永逸。

(舊的?就隨風而逝吧,那個不是我一個人可以扭轉乾坤的)

本來寫在.vimrc裡面也沒有啥問題,不過在windows上面跑就出問題了。

(有一部份需要在windows上面跑,所以要修改_vimrc。請參考不辣的如是說: PERL PORTABLE)

此時換編碼方式的_vimrc會讓gvim的介面跑出亂碼。於是開始修改encoding的部分。

encoding為vim內部、緩衝區、菜單等所使用的編碼,如果 enc 不另外設置(比方在.vimrc)的話,則與locale(或者說是$LANG)一致,又如果 $LANG 為空值,則預設值為latin1。
fileencodings是編輯該文字檔案時,依照先後順序猜測該檔案所使用的編碼列表,filecoding會先使用 fileencodings裡面所猜到的編碼當作該值,如果fileencodings裡面都猜不到,也就是fileencoding 是空值,即是使用encoding的值當作該值。由上面可以知道,如果在~/.vimrc 設定fileencoding的值, 但是vim不一定會取用該值,因為不管fileencoding或是encoding都會覆蓋fileencoding所定義的值。

詳情請參考 這篇文章

所以我把termencoding和encoding交給default

if &termencoding == ""
let &termencoding = &encoding
endif
" set encoding=utf-8
" set termencoding=big5
set fileencoding=utf-8
set bomb
set fileencodings=ucs-bom,utf-8,big5,latin1
set ambiwidth=double

這樣一來gvim的介面就恢復正常中文顯示了

沒有留言: