vim处理文件编码机制 @log

虽然一直都在用Vim,可是水平实在是不怎样,以前都是直接用人家的vimrc不求甚解,能用就好。最近经常碰上一些非utf8编码的文本,在Vim里打开总是有问题,上网搜了些些,于是又长知识了~

Vim编码机制

在Vim中有三个变量是跟文本编码相关的:

  • encoding
    这个是当前屏幕上显示的编码,一般是固定的,跟本地设置有关,在我这里当然是UTF-8了。
  • fileencodings
    经常缩写为fencs,在打开一个文件的时候,Vim会根据这个变量的内容依次判断文件的编码类型,只要它认为是对的了,就用所判断出来的编码打开文件。
  • fieencoding
    这是当然文件的所用的编码,也就是按fencs列表所猜出来的编码类型。举例来说,有个文件是GBK编码,Vim根据fencs判断出它是GBK类型的,然后把它转换为本地的UTF8并显示出来,在写回去的时候,再用GBK写入原文件

测试

由于Vim是按fencs来尝试文件编码的,所以fencs中种类编码出现的顺利就很重要了,比如GBK和cp936, 哪个在前就会被判为哪个。

 # cat < test >测试中文 >eof # iconv --from-code utf8 --to-code gbk ./test > test2 

用Vi打开test2后,用:set fenc查看下fenc,结果为cp936, 用命令set fenc=utf8 设置为utf8。

 # file test test2 test: UTF-8 Unicode text test2: ISO-8859 text 
Advertisements
此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s