Vim中文处理

出自Linux Wiki

在2012年7月12日 (四) 22:14由Chenxing (讨论 | 贡献)所做的修订版本

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有关的文档,请参阅分类 Vi/Vim编辑器

参考资料

  1. Vim documentation: options
个人工具
简体繁体转换