转换文件编码
:set fileencoding=gbk/utf-8
关于vim的编码
Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding (这些选项可能的取值请参考 Vim 在线帮助 :help encoding-names),它们的意义如下: 1. encoding:Vim内部(软件自身)使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。默认是根据你的locale选择。用户手册上建议只在 .vimrc 中改变它的值,事实上也只有在.vimrc 中改变它的值才有意义。为了理解这个参数的含义,可做如下实验: 启动一个VIM,用:set encoding查询当前该参数的值,例如为utf-8,然后执行:set encoding=latin1,然后随便写一个命令让VIM提示出错,你会发现提示信息全是乱码。 反过来,如果你的VIM在运行后提示信息、菜单等处是乱码,可以用:set encoding=...来尝试一下别的编码。你可以用另外一种编码来编辑和保存文件,如你的vim的encoding为utf-8,所编辑的文件采用cp936编码,VIM会自动将读入的文件转成utf-8(VIM的能读懂的方式),而当你写入文件时,又会自动转回成GBK(文件的保存编码)。 1. fileencoding:VIM中当前编辑的文件的字符编码方式,VIM保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此),可用:set fileencoding查询当前文件的编码类型,用:set fileencoding=utf-8将当前文件转换为utf-8格式。 1. fileencodings:VIM读文件时尝试的编码方案的列表,启动时VIM按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终尝试成功的字符编码方式。因此最好将Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。 1. termencoding:VIM所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。如果VIM所在的term与VIM编码相同,则无需设置。如其不然,你可以用VIM的termencoding选项将自动转换成term 的编码。这个选项对Windows 下的gVim 无效(gVim是GUI 模式的,不是Console模式),因此无需关心这个参数,一般置空就行了。 Windows下的gVim的vimrc文件关于文件编码部分应设为: set encoding=utf-8 set fileencodings=utf-8,chinese,latin-1 set fileencoding=utf-8 其中编码方案的第二项chinese主要是为了保持与windows上的很多默认编码格式兼容(如记事本的ANSI格式)。chinese 是个别名,在Unix 里表示gb2312,在Windows里表示cp936,也就是GBK与微软的ANSI兼容。当VIM打开cp936格式的文件时,编辑完后不要用:set fileencoding=utf-8命令将其转换为utf-8格式再保存,因为VIM生成的utf-8格式文件不带BOM表,与windows仍不兼容。