vim 转化文件编码格式
1、将ANSI格式转换成UTF-8
新建一个记事本,命名为test_encoding.txt,并输入“你好,这是UTF-8和ANSI格式转换的例子,在windows中cp936代表着ANSI”这句话。
用gvim打开此test_encoding.txt ,应该是正常显示出上面这句话。
上面这句话是查看VIM内部使用的编码格式,在windows上gvim默认是cp936,上面这个命令你看到的结果应该是 encoding=cp936 设置文件编码为UTF-8,并保存退出。我们现在用windows记事本查看一下这个文件的编码格式。用记事本打开这个文件,并 文件 --> 另存为 ,在弹出来的“另存为”对话框中,最底部编码应该显示的是UTF-8,这表示这个文件是UTF-8编码的。
2、将UTF-8转换成ANSI
用GVIM打开刚才被转换成UTF-8格式的文件,你八成看见的是乱码,这和fileencodings的设置有关。
得到的结果在我的机器上还是cp936.但文件编码是UTF-8,所以乱码 设置GVIM内部使用编码格式是UTF-8,这样的话,终端界面就不是乱码了,应该显示正常。 设置文件编码是cp936,并保存退出,这样的话文件编码就是ansi了。注意:当encoding 和 fileencoding不一样的情况下,在进行保存时,文件编码才会发生转换。所以:set encoding=UTF-8这个命令还是要运行的。
网络上对vim中enconding,fileencoding,fileencodings的解释
vim 编码方式的设置
和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2、UTF-8 等流行的 Unicode 编码方式。然而不幸的是,和很多来自 Linux 世界的软件一样,这需要你自己动手设置。
Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding (这些选项可能的取值请参考 Vim 在线帮助 :help encoding-names),它们的意义如下:
* encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。默认是根据你的locale选择.用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在.vimrc 中改变它的值才有意义。你可以用另外一种编码来编辑和保存文件,如你的vim的encoding为utf-8,所编辑的文件采用cp936编码,vim会 自动将读入的文件转成utf-8(vim的能读懂的方式),而当你写入文件时,又会自动转回成cp936(文件的保存编码).
* fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
* fileencodings: Vim自动探测fileencoding的顺序列表,启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。
* termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。如果vim所在的term与vim编码相同,则无需设置。如其不然,你可以用vim的termencoding选项将自动转换成term 的编码.这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。