Vim中文處理

此頁由 Linux Wiki用戶Chenxing 於 2012年7月13日 (星期五) 00:35 的最後更改。 在Wang Minglong的工作基礎上。

從 Linux Wiki

提示:此文已超过 12 年(4546 天)未更新,如发现内容过时或有误,欢迎改进:)

目錄

中文文件編碼

Vim可以自動判斷文件的編碼,自動判斷失敗時還可手動指定編碼。

Note.gif
注意:
本文方法對Vim 6.0以前的版本無效。[1]

編碼自動判斷

編輯~/.vimrc,(最好在其末尾)加入:

" 设置新文件的编码为 UTF-8
set fileencoding=utf8
 
" 自动判断编码时,依次尝试以下编码:
set fileencodings=ucs-bom,gb18030,utf-8,default
 
" gb18030 最好在 UTF-8 前面,否则其它编码的文件极可能被误识为 UTF-8
Hint.gif
提示:
該設置不會對已有文件的編碼產生影響。

指定打開文件使用的編碼

如果因為種種原因自動判斷編碼失敗,可手動指定編碼。在普通模式下執行如下命令即可:

" 限定打开文件时仅使用某种编码,如 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

拼寫檢查

Note.gif
TODO:
如何讓英文拼寫檢查忽略中文文本?

相關文檔

更多與Vim有關的文檔,請參閱分類 Vi/Vim編輯器

參考資料

  1. Vim documentation: options

本文对您有帮助?分享给更多朋友!

反馈与讨论

发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。
個人工具
简体繁体转换