Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7888499
  • 博文数量: 701
  • 博客积分: 2150
  • 博客等级: 上尉
  • 技术积分: 13233
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-29 16:28
个人简介

天行健,君子以自强不息!

文章分类

全部博文(701)

文章存档

2019年(2)

2018年(12)

2017年(76)

2016年(120)

2015年(178)

2014年(129)

2013年(123)

2012年(61)

分类: LINUX

2012-09-29 11:21:37

虽然VIM自7.0之后对双字节的编码已经支持的很不错了,但是,还是需要一些配置才能完全实现的哦。

要解决的问题:

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 2 3 4 5 if(g:iswindows==1)
 source $VIMRUNTIME/delmenu.vim
 source $VIMRUNTIME/menu.vim
 language messages zh_CN.utf-8
 endif

这段代码是防止菜单乱码。

1 2 3 if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
 set ambiwidth=double
 endif

是为了让vim能够默认以双字节处理那些特殊字符。

set nobomb 是让vim不要自动设置字节序标记,因为并不是所有编辑器都可以识别字节序标记的。

2.由于即便配置了上述的代码,也不一定能够100%认识对编码,所以推荐大家安装一款插件,是国人写的,挺不错的。

fencview.vim

这款插件集成了自动检测编码格式的能力,但是笔者测试过似乎不是很准,所以还是建议关掉自动检测,只有在vim检测失败的时候,才调出fencview,手动选择编码比较好。

在vimrc中配置如下:

1 2 3 "关闭自动检测
 let g:fencview_autodetect=0
 map <F2> :FencView<cr>

这样按下F2就可以直接呼出fencview界面,再按下就会关闭。

当然,如果您是一位经常处理多国编码的用户,那么可能直接安装fencview.vim,并且将自动检测打开会更好些,但是对于vim自己的控制就少了,我想作为vimer肯定不想如此吧,呵呵。

另外,按照上面的格式来配置vim的话,在保存文件时,是不会更改文件格式的,如果想要强制更改,例如要改成utf-8,可以用set fenc=utf-8来执行,之后写入即可。

好啦,就到这里。

转载自 [  ]

本文链接地址: 

阅读(1886) | 评论(0) | 转发(0) |
0

上一篇:RTMP 简介

下一篇:Linux中find常见用法示例

给主人留下些什么吧!~~