vim編碼方式配置的學習和思考

來源:互聯網
上載者:User

標籤:style   color   使用   strong   檔案   資料   sp   問題   c   

哎呀呀,今天9月30號,馬上就要十一長假了,心裡還有點小小浮躁,工作已經基本做完,想成為技術大牛怎麼可以如此浮躁,為了應付浮躁的心靈,決定寫一篇小博,平靜一把。

今天一個設定檔需要有中文,並且同事是在windows下使用,我在ubuntu下使用,當然是偉大的vim了,肯定會遇到中文編碼格式的問題,需要配置一下vimrc。

這裡也正好研究一下vim的編碼配置設定,記錄在此,以備後忘。

vim裡面的字元編碼主要跟三個參數有關:enc(encoding), fenc(fileencoding)和fencs(fileencodings)

fenc是當前檔案(開啟已有檔案以及建立檔案)的編碼,你可以通過改變 fenc後再w來將此檔案存成不同的編碼。比如說,我:set fenc=utf-8然後:w就把檔案存成utf-8的了,:set fenc=gbk再:w就把檔案存成gbk的了。

這個值對於開啟檔案的時候是否能夠正確地解碼沒有任何關係。

fencs就是在開啟已有檔案的時候進行解碼的猜測列表,這個值是在vimrc中寫死的,檔案編碼沒有百分百正確的判斷方法,所以vim只能猜測檔案編碼。比如我的vimrc裡面這個的設定是
set fileencodings=utf-8,gbk

所以我的vim每開啟一個檔案,嘗試fencs列表中的解碼格式進行解碼,如果中間的某次解碼從頭到尾都沒有出錯,那麼 vim就認為這個檔案是這個編碼的,不會再進行後面的嘗試了。

這個時候,fenc的值就會被設為vim最後採用的編碼值,vim下進入命令列模式用set fenc來查看當前已有檔案的編碼格式。
當然這個也是有可能出錯的,比如你的檔案是gbk編碼的,但是實際上只有一兩個字元是中文,那麼有可能他們正好也能被utf-8解碼,那麼這個檔案就會被誤認為是utf-8的導致錯誤解碼。

enc,其作用是vim的顯示編碼格式。不管最後的檔案是什麼編碼的,vim都會將其轉換為當前系統編碼來進行處理,這樣才能在當前系統裡面正確地顯示出 來,enc就是幹這個的。

這3個參數fencs fenc enc都可以在vim的命令列模式下set fencs/fenc/enc查看。

從開啟一個已有檔案的過程來看這3個參數的區別,首先vim或利用fencs列表去匹配解碼檔案,正確解碼後就設定fenc為當前解碼格式,解碼完成呢,接著會做一個轉碼,將檔案轉為enc所指的編碼格式來顯示出來。

這就是這3個配置參數的作用!

將gbk格式檔案用vim開啟,預設編碼格式utf8,開啟時在vim下部會顯示converted,表示編碼格式已轉換。

開啟建立新檔案,當然預設的編輯模式是在使用enc指定的編碼格式,一般是utf8的,儲存檔案時我們可以使用fenc指定當前檔案編碼格式,如set fenc=gbk。就可以實現windows下的正確顯示了。

顯示編碼格式是enc,當前檔案編碼格式是fenc,vim支援的編碼格式是fenc,這中間牽扯到檔案格式到顯示格式的轉換,這樣就去分開了。


當然,如果想深入研究,最好的辦法看vim的源碼,雖然我有追究到底的精神,但我也不是神經。。對於工具的研究適可而止就可以了少年。

編碼參數配置就是這樣,到此為止,作為底層軟體工程師覺得不是很爽,得深入到最底層資料吧。


深入思考一下,編碼格式utf8 gbk是針對於文字檔來說的,編碼格式是什麼意思。

檔案本來就是躺在儲存空間裡的一段資料,資料就是01010111的二進位。位元據本身是沒有意義的,但是編碼賦予了這段資料意義。

文字檔區別於二進位檔案就是編碼層次,在中間有一編解碼層,這一層應該是各個編輯器如vim emacs需要做的工作。

因為對於應用編程,最底層的讀寫函數(read write)讀出來的是最原始的位元據,編輯器在對這些未經處理資料根據編碼格式來解釋顯示。

如果想深究,還是一個方法,不怕受罪讀編輯器源碼吧!

不同的編碼格式肯定對於一段相同的位元據的解釋是不一樣的,所以會造成亂碼。

vim編碼方式配置的學習和思考

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.