1. 程式人生 > >vim 中文亂碼怎麽解決

vim 中文亂碼怎麽解決

希望 不同的 fallback err ascii 完整 https gbk 地方

一般來說只需要正確設置vim的編碼識別序列就很少會遇到亂碼問題:

set fileencodings=ucs-bom,utf-8,utf-16,gbk,big5,gb18030,latin1

這個設置是有順序的,一般原則是盡可能把比較獨特、不會和別的編碼混淆的放在前面(例如ucs-bom,由於帶有BOM頭的關系很難和別的混淆),然後後面可以按照常用程度降序排列。latin1作為fallback放到最後。

這個序列可能還不是很科學也不是很完整(日文、韓文這兩個也比較容易出錯的就沒有包括),但至少就我目前的使用情況來說(英文及一些ASCII擴展/變種、簡體和繁體中文)都沒有遇到過問題。如果有朋友知道更好的順序,歡迎回復或者直接修改我的回答。

如果打開之後還是遇到了亂碼,那麽就需要手動指定編碼了。註意,網絡上很多地方提到的設置“fileencoding”(註意不帶s)的方法是錯誤的。認真閱讀幫助文檔:
When reading a file ‘fileencoding‘ will be set from ‘fileencodings‘. To read a file in a certain encoding it won‘t work by setting ‘fileencoding‘, use the |++enc| argument.

當你打開一個文件以後,vim就已經選定好了編碼並且認為就是這個編碼了,set fileencoding只是修改你希望這個文件以什麽編碼存在,相當於是設置保存時的編碼——一旦設置了不同的fileencoding之後這個文件就變成modified了,需要保存(編碼變了)。

正確的做法是在打開文件時使用++enc參數:
:e ++enc=someencoding somefile

如果想重新打開當前文件的話就省略文件名somefile即可。這兒有一個wiki你可以看看:Reloading a file using a different encoding

最後,不要碰encoding這個設置!這是vim的內部編碼,除非你確定知道你在幹什麽,否則一般不需要修改。

vim 中文亂碼怎麽解決