Chinaunix首页 | 论坛 | 博客
  • 博客访问: 794187
  • 博文数量: 858
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-29 17:43
文章分类

全部博文(858)

文章存档

2011年(1)

2008年(857)

我的朋友

分类: LINUX

2008-08-29 17:52:33

 
  来自http://cobalt65.cublog.cn

  在使用VIM的时候,因为打开的文件编码不同,有时会出现乱码。其实在VIM7.0中已经考虑到这个问题了。只要在~/.vimrc中进行如下设置就可以打开任何文件,而不会再有乱码问题。Debian4.0还可以放在/etc/vim/vimrc.local中,避免自己目录中的点文件太多。

   setencoding=utf8
   setfileencodings=utf8,gbk

  下面对以上设置进行简单地解释,更详细的请用encoding自己看。

  第一句设置VIM中使用的编码方式。它将影响保存在缓存、寄存器、表达式以及viminfo文件中文本。总之,这会影响所有VIM能处理的文本。需要注意的是,如果在编辑时临时改变这个参数,对VIM中当前存在的文本没什么影响,但可能会使一些非ASC码出现问题。通常,保持起始时的默认值,或者在启动VIM时就设定好它。如本例中的做法。对于GTK 2的程序,强烈建议使用utf-8编码。设置时默认utf8是utf-8的别名。

  第二句设置文件编码。这个fileencodings不同于上面的encoding。它只在读写文件时才会发挥作用。看了上面的语句,你可能已经猜到,它其实是一个可选的字符编码列表。当读写文件时,VIM会优先用utf8进行尝试,如果不行的话就转到第二条,在这里就是gbk。如果以上两条都不行,也就是说这个文件中的编码比较混乱,即有utf8和gbk都无法处理的字符,VIM就会自动把fileencodings这条语句清空,即setfileencodings=,同时它会强制使用跟encoding一样的编码读写文件。不过,在绝大多数情况下,不可能有这样的文件。

  其实VIM中还有一个类似的参数叫fileencoding,它才是真正在读写文件时起作用的参数,但只需设定了fileencodings就可以不用管它了。注意有无“s”!有关这两者的密切关系,请自行去看help。

  还有最后一点要说明的是:当以上转换发生在utf8或其它utf变体之间时,没任何问题。但当encoding不是utf8时,可能会导致一点非ACS码的问题。如果想克服这个问题的话,请使用 bad=keep,如在保存文件时用:w bad=keep,但这么做有可能使问题更严重。

  PS: bad参数我没用过,因为如我所讲,绝大多数情况下不可能有这样的文件。

  如果你不想按以上所说在系统中设定这两个参数,只想能正常读写不同编码的文件,请不要担心。VIM还有一个很好的临时性的方法。像这样:edit enc=big5filename,就可以big5编码方式打开一个文件了。保存时用:w enc=big5filename。big5可以换成你机器上有的locale中的任意一种。前提是你的机器能正常显示。祝用得开心!

用VIM编辑文件时的小技巧用VIM编辑文件时的小技巧用VIM编辑文件时的小技巧用VIM编辑文件时的小技巧用VIM编辑文件时的小技巧用VIM编辑文件时的小技巧用VIM编辑文件时的小技巧用VIM编辑文件时的小技巧用VIM编辑文件时的小技巧用VIM编辑文件时的小技巧
阅读(279) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~