Chinaunix首页 | 论坛 | 博客
  • 博客访问: 399799
  • 博文数量: 76
  • 博客积分: 3016
  • 博客等级: 中校
  • 技术积分: 782
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-27 12:05
文章分类

全部博文(76)

文章存档

2017年(1)

2015年(1)

2009年(2)

2008年(28)

2007年(44)

我的朋友

分类: LINUX

2007-05-07 16:47:58

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

下面对以上设置进行简单地解释,更详细的请用 :help encoding 自己看。
第一句设置VIM 中使用的编码方式。它将影响保存在缓存、寄存器、表达式以及viminfo 文件中文本。总之,这会影响所有VIM 能处理的文本。需要注意的是,如果在编辑时临时改变这个参数,对VIM 中当前存在的文本没什么影响,但可能会使一些非ASC 码出现问题。通常,保持起始时的默认值,或者在启动VIM 时就设定好它。如本例中的做法。对于GTK+2 的程序,强烈建议使用utf-8 编码。设置时默认utf8 是utf-8 的别名。
第二句设置文件编码。这个fileencodings 不同于上面的encoding。它只在读写文件时才会发挥作用。看了上面的语句,你可能已经猜到,它其实是一个可选的字符编码列表。当读写文件时,VIM 会优先用utf8 进行尝试,如果不行的话就转到第二条,在这里就是gbk。如果以上两条都不行,也就是说这个文件中的编码比较混乱,即有utf8 和gbk 都无法处理的字符,VIM 就会自动把fileencodings 这条语句清空,即set fileencodings= ,同时它会强制使用跟encoding 一样的编码读写文件。不过,在绝大多数情况下,不可能有这样的文件
;-) 呵呵。
其实VIM 中还有一个类似的参数叫fileencoding,它才是真正在读写文件时起作用的参数,但只需设定了fileencodings 就可以不用管它了。注意有无“s”!有关这两者的密切关系,请自行去看 help。
还有最后一点要说明的是:当以上转换发生在utf8或其它utf变体之间时,没任何问题。但当encoding 不是utf8 时,可能会导致一点非ACS 码的问题。如果想克服这个问题的话,请使用++bad=keep,如在保存文件时用 :w ++bad=keep,但这么做有可能使问题更严重。
PS:++bad 参数我没用过,因为如我所讲,绝大多数情况下不可能有这样的文件。

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

阅读(2585) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-08-04 10:13:57

是我翻译的不好,对不起了。原文写得比较复杂,我做了点精简,结果简出毛病来了。你如果只是用用的话,可以只看第一段和最后一段。

chinaunix网友2009-06-04 23:43:13

文章开头不错,到后面就有点不太懂。。。