Vim中文處理
此頁由 Linux Wiki使用者Chenxing 於 2012年7月13日 (星期五) 00:35 的最後更改。 在Wang Minglong的工作基礎上。
出自Linux Wiki
(重定向自让vim自动判断中文编码)
提示:此文已超过 12 年(4515 天)未更新,如发现内容过时或有误,欢迎改进:)
目錄 |
中文文件編碼
Vim可以自動判斷文件的編碼,自動判斷失敗時還可手動指定編碼。
編碼自動判斷
編輯~/.vimrc,(最好在其末尾)加入:
" 设置新文件的编码为 UTF-8 set fileencoding=utf8 " 自动判断编码时,依次尝试以下编码: set fileencodings=ucs-bom,gb18030,utf-8,default " gb18030 最好在 UTF-8 前面,否则其它编码的文件极可能被误识为 UTF-8
指定打開文件使用的編碼
如果因為種種原因自動判斷編碼失敗,可手動指定編碼。在普通模式下執行如下命令即可:
" 限定打开文件时仅使用某种编码,如 UTF-8 :set fileencodings=utf8 " 重新打开文件 :e
轉換文件編碼
在確保文件打開且無亂碼後:
" 设置文件编码为新编码 :set fileencoding=utf8 :w 新文件名
原理簡介
Vim有自動判斷編碼的功能,這裡主要簡單介紹幾個變數:
- encoding
- 屏幕顯示的編碼,如使用utf-8做locale的系統,encoding就應是utf-8以方便顯示
- fileencodings
- 供vi嘗試的編碼列表,vi會逐個嘗試每一項,如果沒有發生錯誤,就設置當前的fileencoding為與該項相同的值。如果均失敗,fileencoding將為空。
- fileencoding
- 正在被編輯的文件的編碼,它也決定新文件的編碼。如果為空,表示與encoding相同。如果與encoding不同,vi將會在保存和讀取時做二者之間的轉換。
折行與合併行
Vim 支持在編輯文本時自動折行,但默認對中文折行的支持並不理想,建議添加如下兩個設置:
" 如遇Unicode值大于255的文本,不必等到空格再折行。 set formatoptions+=m " 合并两行中文时,不在中间加空格: set formatoptions+=B
拼寫檢查
相關文檔
更多與Vim有關的文檔,請參閱分類 Vi/Vim編輯器。
參考資料
本文对您有帮助?分享给更多朋友!
反馈与讨论
发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。