一次 Vim 文檔內容亂碼故障處理

1、問題

最近出現一個這樣的問題, 我在vim 某個文件的時候,發現裏面的中文亂碼了, 可是我使用 tail 命令的時候是正常的。vim

Vim 的時候this

image-20210314142248142

Tail編碼

2、問題緣由

綜上所述,咱們其實就能夠知道,應該是 vim 的問題了,應該是vim 打開文件使用的編碼格式有問題。3d

咱們查看咱們當前用戶的vim配置 ~/.viminfocode

[djx@localhost ~]$ grep  'encoding'  ~/.viminfo
# Value of 'encoding' when this file was written
*encoding=latin1
[djx@localhost ~]$

咱們發現咱們的 默認encoding 是 latin1blog

Latin1是ISO-8859-1的別名 有些環境下寫做Latin-1。ISO-8859-1編碼是單字節編碼,向下兼容ASCII,其編碼範圍是0x00-0xFF,0x00-0x7F之間徹底和ASCII一致,0x80-0x9F之間是控制字符,0xA0-0xFF之間是文字符號。 不支持中文的,utf-8

這個是不對,應該使用咱們的 utf-8字符串

3、問題解決

3.1 更改 ~/.viminfo

咱們第一想法是 直接更改 ~/.viminfo, 將 *encoding 設置爲 utf-8。 可是咱們發現每次更改完文件後,這個直接失效了。 encoding 的值仍是變回了 *encoding=latin1。 由於 ~/.viminfo 這個文件是會記錄咱們以前編輯的文件以及文件。在vim中操做的行爲,vim會自動記錄下來,保存在 ~/.viminfo 文件中。get

這樣爲了方便下次處理,
如:vim打開文件時,光標會自動在上次離開的位置顯示。
原來搜索過的字符串,新打開文件時自動高亮顯示。it

~/.viminfo 文件是系統自動生成。

3.2 更改 /etc/vimrc

咱們在 /etc/vimrc 末尾文件加上 set encoding=utf-8

而後咱們切換到咱們的用戶,

  1. 執行下 vim /tmp/test.log 退出,這一次是爲了讓 ~/.viminfo 從新生成,
  2. 而後咱們再執行下 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

4、問題延升

也就是對 vim 以及相關配置的一個熟悉和提高。 見另一篇文章。

相關文章
相關標籤/搜索