如何在vim打開文件時指定編碼?
其實在VIM7.0 中已經考慮到這個問題了。只要在 ~/.vimrc 中進行如下設置就可以打開任何文件,而不會再有亂碼問題。
Debian4.0 還可以放在/etc/vim/vimrc.local 中,避免自己目錄中的點文件太多。
set encoding=utf8set fileencodings=utf8,gbk下面對以上設置進行簡單地解釋,更詳細的請用 :help encoding 自己看。
第一句設置VIM 中使用的編碼方式。它將影響保存在緩存、寄存器、表達式以及viminfo 文件中文本。總之,這會影響所有VIM 能處理的文本。
需要注意的是,如果在編輯時臨時改變這個參數,對VIM 中當前存在的文本沒什么影響,但可能會使一些非ASC 碼出現問題。
通常,保持起始時的默認值,或者在啟動VIM 時就設定好它。
如本例中的做法。對于GTK+2 的程序,強烈建議使用utf-8 編碼。設置時默認utf8 是utf-8 的別名。
第二句設置文件編碼。這個fileencodings 不同于上面的encoding。它只在讀寫文件時才會發揮作用。看了上面的語句,你可能已經猜到,它其實是一個可選的字符編碼列表。當讀寫文件時,VIM 會優先用utf8 進行嘗試,如果不行的話就轉到第二條,在這里就是gbk。
如果以上兩條都不行,也就是說這個文件中的編碼比較混亂,即有utf8 和gbk 都無法處理的字符,VIM 就會自動把fileencodings 這條語句清空,即set fileencodings= ,同時它會強制使用跟encoding 一樣的編碼讀寫文件。
不過,在絕大多數情況下,不可能有這樣的文件;-) 呵呵。
其實VIM 中還有一個類似的參數叫fileencoding,它才是真正在讀寫文件時起作用的參數,但只需設定了fileencodings 就可以不用管它了。注意有無“s”!有關這兩者的密切關系,請自行去看 help。
還有最后一點要說明的是:當以上轉換發生在utf8或其它utf變體之間時,沒任何問題。但當encoding 不是utf8 時,可能會導致一點非ACS 碼的問題。
如果想克服這個問題的話,請使用++bad=keep,如在保存文件時用 :w ++bad=keep,但這么做有可能使問題更嚴重。
如果你不想按以上所說在系統中設定這兩個參數,只想能正常讀寫不同編碼的文件,請不要擔心。
VIM 還有一個很好的臨時性的方法。像這樣 :edit ++enc=big5 filename,就可以big5 編碼方式打開一個文件了。
保存時用 :w ++enc=big5 filename。
big5 可以換成你機器上有的locale 中的任意一種。
前提是你的機器能正常顯示。祝用得開心!