vim在開啟一些中文檔案時出現亂碼,目測屬於編碼問題,解決方法如下:
擷取自:
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
即可搞定。
順便記錄一下vim編碼的詳細介紹
vim和所有的流行文字編輯器一樣,vim 可以很好的編輯各種字元編碼的檔案,這當然包括 ucs-2、utf-8 等流行的 unicode 編碼方式。
vim 有
(1)encoding: vim 內部使用的字元編碼方式,包括 vim 的 buffer (緩衝區)、選單文字、訊息文字等。使用者手冊上建議只在 .vimrc 中改變它的值,事實上似乎也只有在 .vimrc 中改變它的值才有意義。
(2)fileencoding: vim 中當前編輯的檔案的字元編碼方式,vim 儲存檔案時也會將檔案儲存為這種字元編碼方式 (不管是否新檔案都如此),網上是這樣介紹的,但是我這樣做在.vimrc中定義為utf-8似乎沒有作用,只能在開啟vim檔案時手動設定才會起效,不知道什麼原因。
(3)fileencodings: vim 啟動時會按照它所列出的字元編碼方式逐一探測即將開啟的檔案的字元編碼方式,並且將 fileencoding 設定為最終探測到的字元編碼方式。因此最好將 unicode 編碼方式放到這個列表的最前面,將拉丁語系編碼方式 latin1 放到最後面。
(4)termencoding: vim 所工作的終端 (或者 windows 的 console 視窗) 的字元編碼方式。這個選項在 windows 下對我們常用的 gui 模式的 gvim 無效,而對 console 模式的 vim 而言就是 windows 控制台的**頁,並且通常我們不需要改變它。
再來記錄一下 vim 的多字元編碼方式支援是如何工作的。
(1)vim 啟動,根據 .vimrc 中設定的 encoding 的值來設定 buffer、選單文字、訊息文的字元編碼方式。
(2)讀取需要編輯的檔案,根據 fileencodings 中列出的字元編碼方式逐一探測該檔案編碼方式。並設定 fileencoding 為探測到看起來是正確的 字元
編碼方式,
如果沒有找到合適的編碼,就用latin-1(ascii)編碼開啟
。(3) 對比 fileencoding 和 encoding 的值,若不同則呼叫 iconv 將檔案內容轉換為 encoding 所描述的字元編碼方式,並且把轉換後的內容放到為此檔案開闢的 buffer 裡,此時我們就可以開始編輯這個檔案了。
(4)編輯完成後儲存檔案時,再次對比 fileencoding 和 encoding 的值。若不同,再次呼叫 iconv 將即將儲存的 buffer 中的文字轉換為 fileencoding 所描述的字元編碼方式,並儲存到指定的檔案中。
由於 unicode 能夠包含幾乎所有的語言的字元,而且 unicode 的 utf-8 編碼方式又是非常具有價效比的編碼方式 (空間消耗比 ucs-2 小),因此建議 encoding 的值設定為 utf-8。這麼做的另乙個理由是 encoding 設定為 utf-8 時,vim 自動探測檔案的編碼方式會更準確 (或許這個理由才是主要的 ;) 。我們在中文 windows 裡編輯的檔案,為了兼顧與其他軟體的相容性,檔案編碼還是設定為 gb2312/gbk 比較合適,因此 fileencoding 建議設定為 chinese (chinese 是個別名,在 unix 裡表示 gb2312,在 windows 裡表示 cp936,也就是 gbk 的**頁)。
這張圖基本包含了vim的基礎操作,還有一些高階應用後續新增。
Linux工具 編輯器神器VIM學習筆記
搭載系統 ubuntu 16.04 主要記錄些常用vim指令及用法體會。i 進入編輯模式 先按esc退出insert模式 shift g 游標至行尾 gg 游標至行首 dd 刪除當前行 u 恢復刪除 yy 複製某行 p 貼上某行 退出檔案,先按esc退出編輯模式,輸入 wq 寫入並退出 q 不儲存退...
學習筆記五(vim)
vim 選項 檔名 vim 開啟檔案後,讓游標處於第 行的行首,預設行尾 vim pattern 讓游標處於第乙個被pattern匹配到的行的行首 vim b file 二進位制方式開啟檔案 vim d file1 file2.比較多個檔案 vim m file 唯讀形式開啟檔案 vim e fil...
Linux學習筆記(三) vim
vim 一 插入命令 命令作用 在游標所在字元後插入 a在游標所在行尾插入 i在游標所在字元前插入 i在游標所在行行首插入 o在游標下插入新行 o在游標上插入新行 二 定位命令 命令 作用 set nu 設定行號 set nonu 取消行號 gggg 到第一行 到最後一行 ng到第n行 n到第n行 ...