作者: Chihchun (Rex) 看板: Linux
標題: Re: [Tips] GVim 的編碼/字集線上轉換(修訂版)
時間: Sat Jan 18 03:16:08 2003
※ 引述《EdwardLee.bbs@bbs.cis.nctu.edu.tw (李果正)》之銘言:
> 現在使用 UTF-8 編碼的文件漸漸多了起來,編輯器也該跟得上腳步,
> 以下是 gvim(不是 vim) 線上切換編碼/字集的方法,是急就章寫的,
> 可能會有錯誤及思考不周的地方,使用時請自行負責後果,No warranty。
> 歡迎自行改進。
> 在 $HOME/.gvimrc 中加入以下 Vim script 片段:
> 這樣一來,讀入 UTF-8 文件時,只要按一下 F10 就會切換到 UTF-8 環境。
> 再按一次又會切回 Big-5。
補充 EdwardLee 的文件。
vim 其實可以更方便一點,如果你用的文件字集都在 BIG5 之間,那麼可以這樣作
---------------------------------------------------------------------------
if has("multi_byte")
set encoding=utf-8
setglobal fileencoding=utf-8
set bomb
set termencoding=big5
set fileencodings=big5,utf-8,ucs-bom,iso-8859-15,iso-8859-3
set
guifont=-misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1
set guifontwide=-misc-fixed-medium-r-normal-*-18-120-100-100-c-180-iso10646
-1
else
echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
endif
---------------------------------------------------------------------------
這有甚麼用 ? 這可以讓你直接在 terminal 中開 UTF8 字碼文件,vim 會轉成 BIG5,
(字碼對不到的你會看到怪碼,存檔後他還是原本的 UTF8 碼,不會破壞檔案)
所以你可以直接輸入 BIG5,存檔後還是 UTF8。在 gvim 中同理,vim 會自動幫你轉碼
的,然而, Xwindow 下顯示還是 UTF8,所以字不會弄爛。如此一來還是可以用 xcin
直接輸入,不用特別找 UTF8 xim。在過渡時刻,這樣非常方便。
這在我的 vim 6.1.18 編輯器中工作的很好。
勘誤:ucs-bom 是 "ucs with byte-order-mark" 不該在 utf-8 後面。
---------------------------------------------------------------------------
if has("multi_byte")
set encoding=utf-8
" setglobal fileencoding=big5
set fileencoding=big5
set bomb
set termencoding=big5
set fileencodings=ucs-bom,big5,utf-8,latin1
set guifont=-misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1
set guifontwide=-misc-fixed-medium-r-normal-*-18-120-100-100-c-180-iso10646-1
else
echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
endif
---------------------------------------------------------------------------
'encoding' Encoding 代表的是 vim 內部使用的編碼。
一般而言 Unicode 的環境請用 utf-8 。
'fileencoding' 這個與 encoding 不一樣,只有在讀寫檔案的時候影響。
setglobal fileencoding 應該會變成預設值,set fileencoding
也可以,要全部使用 big5 就設成
set fileencoding=big5
否則可以不設,會以 encoding 為預設值。
'fileencodings' 所有可能的 encodings,開檔時候會一一測試使用,如果沒有錯誤便
使 fileencoding 等於該 encoding。他會自動偵測字碼。免手動轉換。
---------------------------------------------------------------------------
* help infos
:h utf8
:h encoding-values
:h 'enc'
:h 'fenc'
:h 'fencs'
:h 'tenc'
:h 'bomb'
:h 'guifont'
:h ga
:h g8
:h :dig
:h i_Ctrl-V_digit
:h has()
http://www.vim.org/tip_view.php?tip_id=246