linux centos 的编码格式,Linux/CentOS/fedora下vim显示的字符编码设置
和所有的流行文本編輯器一樣,vim可以很好的編輯各種字符編碼的文件,這當然包括ucs-2、utf-8 等流行的 unicode 編碼方式。然而不幸的是,和很多來自 linux 世界的軟件一樣,這需要你自己動手設置。
Vim 有四個跟字符編碼方式有關的選項:encoding、fileencoding、fileencodings、termencoding (這些選項可能的取值請參考 Vim 在線幫助 :help encoding-names),它們的意義如下:
*encoding: Vim 內部使用的字符編碼方式,包括 Vim 的 buffer (緩沖區)、菜單文本、消息文本等。默認是根據你的locale選擇.用戶手冊上建議只在 .vimrc 中改變它的值,事實上似乎也只有在.vimrc 中改變它的值才有意義。你可以用另外一種編碼來編輯和保存文件,如你的vim的encoding為utf-8,所編輯的文件采用cp936編碼,vim會自動將讀入的文件轉成utf-8(vim的能讀懂的方式),而當你寫入文件時,又會自動轉回成cp936(文件的保存編碼).
*fileencoding: Vim 中當前編輯的文件的字符編碼方式,Vim 保存文件時也會將文件保存為這種字符編碼方式 (不管是否新文件都如此)。
*fileencodings: Vim自動探測fileencoding的順序列表, 啟動時會按照它所列出的字符編碼方式逐一探測即將打開的文件的字符編碼方式,并且將 fileencoding 設置為最終探測到的字符編碼方式。因此最好將Unicode 編碼方式放到這個列表的最前面,將拉丁語系編碼方式 latin1 放到最后面。
*termencoding: Vim 所工作的終端 (或者 Windows 的 Console 窗口) 的字符編碼方式。如果vim所在的term與vim編碼相同,則無需設置。如其不然,你可以用vim的termencoding選項將自動轉換成term的編碼.這個選項在 Windows 下對我們常用的 GUI 模式的 gVim 無效,而對 Console 模式的Vim 而言就是 Windows 控制臺的代碼頁,并且通常我們不需要改變它。
Vim 的多字符編碼方式支持的工作原理及流程如下:
1. Vim 啟動,根據 .vimrc 中設置的 encoding 的值來設置 buffer、菜單文本、消息文的字符編碼方式。
2. 讀取需要編輯的文件,根據 fileencodings 中列出的字符編碼方式逐一探測該文件編碼方式。并設置 fileencoding 為探測到的,看起來是正確的 (注1) 字符編碼方式。
3. 對比fileencoding 和 encoding 的值,若不同則調用 iconv 將文件內容轉換為encoding 所描述的字符編碼方式,并且把轉換后的內容放到為此文件開辟的 buffer 里,此時我們就可以開始編輯這個文件了。注意,完成這一步動作需要調用外部的 iconv.dll(注2),你需要保證這個文件存在于 $vimruntime 或者其他列在 path 環境變量中的目錄里。
4. 編輯完成后保存文件時,再次對比 fileencoding 和 encoding 的值。若不同,再次調用 iconv 將即將保存的 buffer 中的文本轉換為 fileencoding 所描述的字符編碼方式,并保存到指定的文件中。同樣,這需要調用 iconv.dll由于 Unicode 能夠包含幾乎所有的語言的字符,而且 Unicode 的 UTF-8 編碼方式又是非常具有性價比的編碼方式 (空間消耗比 UCS-2 小),因此建議 encoding 的值設置為utf-8。這么做的另一個理由是 encoding 設置為 utf-8 時,Vim 自動探測文件的編碼方式會更準確 (或許這個理由才是主要的 ;)。我們在中文 Windows 里編輯的文件,為了兼顧與其他軟件的兼容性,文件編碼還是設置為 GB2312/GBK 比較合適,因此 fileencoding 建議設置為 chinese (chinese 是個別名,在 Unix 里表示 gb2312,在 Windows 里表示cp936,也就是 GBK 的代碼頁)。
對于fedora來說,vim的設置一般放在/etc/vimrc文件中,不過,建議不要修改它??梢孕薷膥/.vimrc文件(默認不存在,可以自己新建一個),寫入所希望的設置。
我的.vimrc文件如下:view sourceprint?
:set encoding=utf-8
:set fileencodings=ucs-bom,utf-8,cp936
:set fileencoding=gb2312
:set termencoding=utf-8
其中,fileencoding配置可以設置utf-8。
具體設置舉例:
1.只編輯GBK編碼的文件set fileencodings=cp936
set fileencoding=cp936
set encoding=cp936
2.只編輯UTF-8編碼的中文文件set fileencodings=utf-8
set fileencoding=utf-8
set encoding=cp936 或者 set encoding=utf-8
3.同時支持GBK和UTF-8編碼set fileencodings=ucs-bom,utf-8,cp936
set fileencoding=utf-8
set encoding=cp936 或者 set encoding=utf-8
如果在終端環境下使用Vim,需要設置termencoding和終端所使用的編碼一致。例如:set termencoding=cp936 或者 set termencoding=utf-8
Windows記事本編輯UTF-8編碼文件時會在文件頭上加上三個字節的BOM:EFBBBF。如果fileencodings中設置ucs- bom的目的就是為了能夠兼容用記事本編輯的文件,不需要的話可以去掉。Vim在保存UTF-8編碼的文件時會去掉BOM。去掉BOM的最大好處是在 Unix下能夠使用cat a b>c來正確合并文件,這點經常被忽略。
總結
以上是生活随笔為你收集整理的linux centos 的编码格式,Linux/CentOS/fedora下vim显示的字符编码设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux中xjvf指令,linux解压
- 下一篇: linux不能识别 符号,在linux中