(1)读文件
VIM打开文件时,并不知道文件的字符编码,所以不得不进行探测。探测是按照一定的优先顺序进行测试。
依据的标准就是:fileencodings。VIM逐一测试fileencodings变量指定的字符编码方式,找到合适的将其设置为fileencoding变量。
然后把文件中的编码转换成encoding指定的编码方式,存入文件缓冲区中。
(2)显示文件
VIM把文件读取完毕并以encoding编码存放到缓冲区内存之后,会根据termencoding指定的终端编码方式,转换成termencoding编码后,写入到终端。
此时,终端按照自身的编码属性识别出一个个的字符,调用渲染引擎绘制到屏幕上。
(3)保存文件
VIM把缓冲区中的encoding编码的字节集合转换成fileencoding编码后写入磁盘,完成文件保存。
可以看出,VIM涉及到的3种字符编码之间的转换:
读:fileencoding—–> encoding
显:encoding ——> termencoding
写:encoding ——-> fileencoding
设置VIM配置文件~/.vimrc,在配置文件中加入下面的配置:
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8
-----------------
遇到的一个问题
一个文件里边有utf-8与gbk两种格式,vim判断不出格式,fileencoding=latin1,导致两种格式显示都不正确