[轉貼] GVim 的編碼/字集線上轉換(修訂版)

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

[轉貼] GVim 的編碼/字集線上轉換(修訂版)

文章moto » 週四 2月 13, 2003 4:15 pm

作者: 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
頭像
moto
摩托學園站長
摩托學園站長
 
文章: 2808
註冊時間: 週二 9月 03, 2002 3:37 am
來自: 台北

re:[轉貼] GVim 的編碼/字集線上轉換(修訂版)

文章huki » 週六 10月 25, 2003 11:38 am

moto大大
有可能設定預設是big5
若是檔案是utf8的就改變嗎?
因為我預設都是big5
可是有些文件都是用utf8用成的(像gaim的log)
麻煩大大了 :ooops:
Linux給我的感覺就是自由自在,沒有壓力
希望大家都能參與linux
變成linux世界的一份子
HuKi
頭像
huki
快樂的大學生
快樂的大學生
 
文章: 783
註冊時間: 週四 11月 28, 2002 7:27 am
來自: 家:中壢/公:桃園

re:[轉貼] GVim 的編碼/字集線上轉換(修訂版)

文章d2207197 » 週六 10月 25, 2003 12:51 pm

huki 寫:moto大大
有可能設定預設是big5
若是檔案是utf8的就改變嗎?
因為我預設都是big5
可是有些文件都是用utf8用成的(像gaim的log)
麻煩大大了 :ooops:

??
上面那篇不就是嗎??
頭像
d2207197
鑽研的研究生
鑽研的研究生
 
文章: 1763
註冊時間: 週二 5月 27, 2003 9:57 pm
來自: 火星

re:[轉貼] GVim 的編碼/字集線上轉換(修訂版)

文章huki » 週六 10月 25, 2003 1:23 pm

沒有啊!若加上那個的話
我的工作列的中文都不見了
Linux給我的感覺就是自由自在,沒有壓力
希望大家都能參與linux
變成linux世界的一份子
HuKi
頭像
huki
快樂的大學生
快樂的大學生
 
文章: 783
註冊時間: 週四 11月 28, 2002 7:27 am
來自: 家:中壢/公:桃園

re:[轉貼] GVim 的編碼/字集線上轉換(修訂版)

文章huki » 週六 10月 25, 2003 1:56 pm

不知vim的script要怎麼加啊?
Linux給我的感覺就是自由自在,沒有壓力
希望大家都能參與linux
變成linux世界的一份子
HuKi
頭像
huki
快樂的大學生
快樂的大學生
 
文章: 783
註冊時間: 週四 11月 28, 2002 7:27 am
來自: 家:中壢/公:桃園

re:[轉貼] GVim 的編碼/字集線上轉換(修訂版)

文章d2207197 » 週六 10月 25, 2003 6:29 pm

huki 寫:不知vim的script要怎麼加啊?

~/.vimrc
頭像
d2207197
鑽研的研究生
鑽研的研究生
 
文章: 1763
註冊時間: 週二 5月 27, 2003 9:57 pm
來自: 火星

re:[轉貼] GVim 的編碼/字集線上轉換(修訂版)

文章d2207197 » 週六 10月 25, 2003 7:28 pm

代碼: 選擇全部
if has("multi_byte")
    set encoding=big5
    set fileencoding=big5
    set bomb
    set termencoding=big5
    set fileencodings=ucs-bom,utf-8,big5,latin1
else
    echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
endif


我的是這樣子

不知道 huki 兄設成這樣可不可以

注意 "fileencodings" 值的順序
頭像
d2207197
鑽研的研究生
鑽研的研究生
 
文章: 1763
註冊時間: 週二 5月 27, 2003 9:57 pm
來自: 火星

re:[轉貼] GVim 的編碼/字集線上轉換(修訂版)

文章huki » 週六 10月 25, 2003 11:08 pm

可以了也~~~~
多謝d2207197兄
我不太了這個的意思不知道為何?!
可以說明一下嗎?!
Linux給我的感覺就是自由自在,沒有壓力
希望大家都能參與linux
變成linux世界的一份子
HuKi
頭像
huki
快樂的大學生
快樂的大學生
 
文章: 783
註冊時間: 週四 11月 28, 2002 7:27 am
來自: 家:中壢/公:桃園

re:[轉貼] GVim 的編碼/字集線上轉換(修訂版)

文章d2207197 » 週六 10月 25, 2003 11:44 pm

huki 寫:可以了也~~~~
多謝d2207197兄
我不太了這個的意思不知道為何?!
可以說明一下嗎?!

上面的文章都有說明阿
moto 寫:'encoding' Encoding 代表的是 vim 內部使用的編碼。
一般而言 Unicode 的環境請用 utf-8 。

解決你的文字顯示不出來的問題
只不過把 encoding 的 utf-8 改成 big5 而已
既然你的環境是 big5 ,那就改成 big5

至於 'fileencodings' 的順序
把 'fileencodings' 的 utf-8 放到 big5 前面
讓他先測試 utf-8,我發現這樣比較沒問題
頭像
d2207197
鑽研的研究生
鑽研的研究生
 
文章: 1763
註冊時間: 週二 5月 27, 2003 9:57 pm
來自: 火星


回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客