VIM文件编码的识别与转换

这两天摸索gVim,有了一点心得。

之前已经解决了文件编码识别及菜单编码的问题。

这次需求有些高了,就是手动更换文件编码,由于各编码存在交叉,有时候有些文件内容可能全部只含英文单词及符号,打开之后默认就会选择到编码列表靠前的编码(如果加了bomb情况会不一样)

但自从之前有过一次php bomb的问题(php文件会将bomb作为字符输出,影响到一些设置和输出的设定)之后,我习惯不要bomb。

插件自然是有的,官网上有人发布了fencview(下载地址:blog.chinaunix.net/link.php),可是初次安装,并不像想像那样好用,首先是iconv.dll的问题,win7下是没有这个文件的,所以打开gb编码文件自动转换时,总是报错,看了下说明,需要下载iconv.dll放到 $path(环境变量的path值,一般都包含c:\window\)里.于是照猫画虎。

之后,打开文件,输入 :FencView..哈哈,果然很好用,右边出现了选择编码的窗口。这下方便多了。

可是,转而又发现打开gb编码的文件时,需要按一下回车才能显示,提示貌似说是自动转换编码的。

这个,比较不爽。于是再看说明,发现有一句

let g:fencview_autodetect = 1

应该是这个了,于是改为

let g:fencview_autodetect = 0

加入到_vimrc里面,大功告成!

末了再加一点:其实gVim不用插件也可以完美转换编码,只是要手动输入编码类型,如::set fenc=gbk

不同环境下工作,文件编码可是个大问题,以前在dw里,经常莫名其妙,比如要用utf-8编码,但内容中没有中文字符,这样下次一打开,又成gb编码了,只要不注意加了中文字符,便会乱码。很是头疼。

gVim这一点很方便,只要是可以转换的编码,文件打开后都可以用:set fenc=来转换,并不会出现乱码。但是,状态栏还是加上文件编码,以备随时查看

_virmc里加一句

set statusline=[%n]%<%f%y%h%m[%{&fenc!=''?&fenc:&enc}:%{&ff}]%r%=[%b\ 0x%B]\ %l\ of\ %L,%c%V\ Page\ %N\ %P