1. 程式人生 > >vim中的編碼問題

vim中的編碼問題

本文主要講解下,讓Vim能正確顯示和儲存各種編碼檔案的一些常用方法。

Vim編碼配置裡面有3個選項,分別是encoding 、fileencodings、fileencoding 簡寫分別對應為enc、fencs、fenc。

encoding(enc): 此專案配置的是vim的預設顯示編碼,如果你開啟的檔案編碼與該屬性配置的編碼不同,那麼Vim會將編碼自動轉換到這種編碼然後再顯示,

如果如果這2種編碼集合完全對應那麼很有可能出現壞塊也就是沒轉換成功然後從列表(下面就講到,實際上就是fens)中搜尋下一個編碼,也就是出現我們所說的亂碼。

驗證上述結論:用vim開啟一個檔案,輸入”:set encoding” vim 會自動把encoding的值打印出來。

fileencodings(fencs): 此專案配置的是一個編碼列表,Vim在讀取檔案的時候,會根據這裡的編碼自動檢測,如果檢測失敗則嘗試下一個,直到檢測成功為止。如果一直沒有轉換成功,則此值會為空,也就是上述encoding的列舉,你可以重新調整循序來調整優先順序。(需要在.vimrc中修改)

驗證上述結論:同上,列印fencs的值(fencs 就是 fileencodings

fileencoding(fenc):這個東西尤其重要這個配置的是新建檔案和儲存檔案時檔案的編碼,如果它的值與encoding(enc)不一樣,那麼儲存的時候Vim會自動把檔案內容由encoding(enc)

的編碼轉換為fileencoding(fenc)配置編碼再儲存。而讀取檔案的時候,該選項的值會自動同步為fileencodings(fencs):配置的有效編碼。(實際上就是上面說的轉換規則)

例如:

如果我們是如下配置

encoding(enc):utf-8

fileencodings(fencs):utf-8,gbk

fileencoding(fenc):gbk

那麼我們開啟一個gbk編碼的檔案,Vim會將內容轉換為utf-8格式來顯示,但是儲存的時候檔案的編碼卻依然是gbk

如果我的工作環境主要是編輯utf-8,偶爾會修改一下gbk的編碼,我們該怎麼配置呢?

首先我們可以把fileencoding

留空,然後只配置fileencodings(fencs):utf-8,gbk,ucs-bom,cp936(這個需要在.vimrc中配置,不然下一次開啟不會改變,而且這個列表是開啟後不能改的,改了也沒效果

按照上面的規則,Vim就會自動把檔案儲存為gbk的編碼了

如果我編輯了一個utf-8檔案,想把它以gbk的格式儲存,該怎麼辦呢?

在命令列模式輸入 :set fenc=gbk 然後儲存檔案即可,儲存之後再輸入:set fenc=utf-8就可以繼續編輯其他utf-8檔案了。