VIM解决中文编码问题
2010-10-16 13:41
253 查看
虽然VIM自7.0之后对双字节的编码已经支持的很不错了,但是,还是需要一些配置才能完全实现的哦。
要解决的问题:
1.识别双字节编码格式
需要先了解的知识:
vim中的内置变量:
enc(encoding):vim的内部编码
fenc(fileencoding):vim解析出来的当前文件编码(有可能解析成错的哦)
fencs(fileencodings):vim解析文件时猜测的编码格式顺序列表
需要的配置:
1.vimrc中的代码如下:
解释如下:
set encoding=utf-8这行是将vim的内部编码格式变为utf-8,这样vim识别文件正确的准确性会提高很多。set fenc=cp936是指当新建一个文件的时候,默认编码是gbk,而set fileencodings=cp936,ucs-bom,utf-8 这一行会让vim按照gbk,utf-8(没有头),utf-8的顺序识别。由于笔者的工作环境下大部分代码要求为gbk,所以才如上述设置,如果读者需要默认为utf-8格式,可以如下配置:
接下来:
这段代码是防止菜单乱码。
是为了让vim能够默认以双字节处理那些特殊字符。
set nobomb 是让vim不要自动设置字节序标记,因为并不是所有编辑器都可以识别字节序标记的。
2.由于即便配置了上述的代码,也不一定能够100%认识对编码,所以推荐大家安装一款插件,是国人写的,挺不错的。
fencview.vim
这款插件集成了自动检测编码格式的能力,但是笔者测试过似乎不是很准,所以还是建议关掉自动检测,只有在vim检测失败的时候,才调出fencview,手动选择编码比较好。
在vimrc中配置如下:
这样按下F2就可以直接呼出fencview界面,再按下就会关闭。
当然,如果您是一位经常处理多国编码的用户,那么可能直接安装fencview.vim,并且将自动检测打开会更好些,但是对于vim自己的控制就少了,我想作为vimer肯定不想如此吧,呵呵。
另外,按照上面的格式来配置vim的话,在保存文件时,是不会更改文件格式的,如果想要强制更改,例如要改成utf-8,可以用set fenc=utf-8来执行,之后写入即可。
好啦,就到这里。
转载自Vimer的程序世界 [ http://www.vimer.cn ]
本文链接地址: http://www.vimer.cn/2009/10/87.html
要解决的问题:
1.识别双字节编码格式
需要先了解的知识:
vim中的内置变量:
enc(encoding):vim的内部编码
fenc(fileencoding):vim解析出来的当前文件编码(有可能解析成错的哦)
fencs(fileencodings):vim解析文件时猜测的编码格式顺序列表
需要的配置:
1.vimrc中的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 | set encoding=utf-8 set fenc=cp936 set fileencodings=cp936,ucs-bom,utf-8 if(g:iswindows==1) source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim language messages zh_CN.utf-8 endif if v:lang =~? '^/(zh/)/|/(ja/)/|/(ko/)' set ambiwidth=double endif set nobomb |
set encoding=utf-8这行是将vim的内部编码格式变为utf-8,这样vim识别文件正确的准确性会提高很多。set fenc=cp936是指当新建一个文件的时候,默认编码是gbk,而set fileencodings=cp936,ucs-bom,utf-8 这一行会让vim按照gbk,utf-8(没有头),utf-8的顺序识别。由于笔者的工作环境下大部分代码要求为gbk,所以才如上述设置,如果读者需要默认为utf-8格式,可以如下配置:
1 2 | set fenc=utf-8 set fileencodings=ucs-bom,utf-8,cp936 |
1 23 | if(g:iswindows==1) source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim language messages zh_CN.utf-8 endif |
1 23 | if v:lang =~? '^/(zh/)/|/(ja/)/|/(ko/)' set ambiwidth=double endif |
set nobomb 是让vim不要自动设置字节序标记,因为并不是所有编辑器都可以识别字节序标记的。
2.由于即便配置了上述的代码,也不一定能够100%认识对编码,所以推荐大家安装一款插件,是国人写的,挺不错的。
fencview.vim
这款插件集成了自动检测编码格式的能力,但是笔者测试过似乎不是很准,所以还是建议关掉自动检测,只有在vim检测失败的时候,才调出fencview,手动选择编码比较好。
在vimrc中配置如下:
1 23 | "关闭自动检测 let g:fencview_autodetect=0 map <F2> :FencView<cr> |
当然,如果您是一位经常处理多国编码的用户,那么可能直接安装fencview.vim,并且将自动检测打开会更好些,但是对于vim自己的控制就少了,我想作为vimer肯定不想如此吧,呵呵。
另外,按照上面的格式来配置vim的话,在保存文件时,是不会更改文件格式的,如果想要强制更改,例如要改成utf-8,可以用set fenc=utf-8来执行,之后写入即可。
好啦,就到这里。
转载自Vimer的程序世界 [ http://www.vimer.cn ]
本文链接地址: http://www.vimer.cn/2009/10/87.html
相关文章推荐
- VIM解决中文编码问题
- VIM解决中文编码问题
- 查看mysql数据库及表编码格式和解决中文乱码问题
- 解决Itext中文编码问题的方案
- Linux下MySQL 5.5/tomact6/Centos 的修改字符集编码为UTF8(彻底解决中文乱码问题)
- 解决 django 查数据库时中文编码问题
- 查看linu系统编码,解决中文编码不一致的问题
- sublime text 2中添加gb18030编码的支持(解决安装gbk编码支持后部分中文文件依然乱码的问题)
- 【Git】git status 中文文件名编码问题解决
- javascript 对url参数进行编码(解决中文乱码问题)
- Apache2.2+mod_encoding解决URL中文编码问题-2008.1.8
- 如何解决hp-unix中文二级编码乱码问题("喆")?
- 解决vim中文乱码问题
- Python2.x版本中基本的中文编码问题解决
- 用hibernate进行MYSQL数据存储时遇到的中文编码问题及其解决方
- 用javascript实现Base64编码(解决中文问题C#里解码) 转
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- Linux下MySQL5.6的修改字符集编码为UTF8(解决中文乱码问题)
- python使用requests爬取网页,遇到中文出现遇到中文出现乱码的编码问题及解决乱码的编码问题及解决
- 解决vim下中文乱码的问题