最近出現一個這樣的問題, 我在vim 某個文件的時候,發現裏面的中文亂碼了, 可是我使用 tail 命令的時候是正常的。vim
Vim 的時候this
Tail編碼
綜上所述,咱們其實就能夠知道,應該是 vim 的問題了,應該是vim 打開文件使用的編碼格式有問題。3d
咱們查看咱們當前用戶的vim配置 ~/.viminfo
。code
[djx@localhost ~]$ grep 'encoding' ~/.viminfo # Value of 'encoding' when this file was written *encoding=latin1 [djx@localhost ~]$
咱們發現咱們的 默認encoding 是 latin1
blog
Latin1是ISO-8859-1的別名 有些環境下寫做Latin-1。ISO-8859-1編碼是單字節編碼,向下兼容ASCII,其編碼範圍是0x00-0xFF,0x00-0x7F之間徹底和ASCII一致,0x80-0x9F之間是控制字符,0xA0-0xFF之間是文字符號。 不支持中文的,utf-8
這個是不對,應該使用咱們的 utf-8
。字符串
咱們第一想法是 直接更改 ~/.viminfo
, 將 *encoding 設置爲 utf-8
。 可是咱們發現每次更改完文件後,這個直接失效了。 encoding 的值仍是變回了 *encoding=latin1
。 由於 ~/.viminfo
這個文件是會記錄咱們以前編輯的文件以及文件。在vim中操做的行爲,vim會自動記錄下來,保存在 ~/.viminfo
文件中。get
這樣爲了方便下次處理,
如:vim打開文件時,光標會自動在上次離開的位置顯示。
原來搜索過的字符串,新打開文件時自動高亮顯示。it~/.viminfo 文件是系統自動生成。
咱們在 /etc/vimrc
末尾文件加上 set encoding=utf-8
。
而後咱們切換到咱們的用戶,
vim /tmp/test.log
退出,這一次是爲了讓 ~/.viminfo
從新生成,vim /tmp/test.log
就能夠看到沒有亂碼了。而且 ~/.viminfo
的 *encoding=utf-8
了。
[djx@localhost ~]$ grep 'encoding' ~/.viminfo # Value of 'encoding' when this file was written *encoding=utf-8
若是咱們按照上面的執行沒有成功,咱們能夠嘗試強制從新生成
.viminfo
. 就是把 viminfo 給重命名或者刪除,讓系統從新生成。mv ~/.viminfo ~/.viminfo.bak
也就是對 vim 以及相關配置的一個熟悉和提高。 見另一篇文章。