gVim里编码的故事

gvim里fileencoding , fileencodings 和 encoding

fileencodings 和fileencoding

这两个参数基本上就是为了让vim确定下来一件事: 这个文件存储在你的硬盘里时是用什么编码的。因为只有知道了这件事,vim才能顺利得从硬盘读一个给定的文本文件,或向硬盘里写入文本文件。

当vim尝试去打开一个文件时,如果不给它任何参数,它并不知道这个文件是啥编码(UTF-8/16? Latin? GBK? BIG5?),此时它会去看fileencodings这个变量(实际上是一个字符编码列表),从这个列表里挨个尝试直到试出来最有可能的编码,然后就把这个编码赋给全局变量fileencoding,当vim需要保存文件到磁盘时,它就会用这个fileencoding所指定的编码格式来存储。 也就是说fileencoding 只在写入的时刻才会起到作用。 你可以在打开文件以后修改 fenc的值为你想要的编码格式,这要就会在保存时保存成相应格式。当然,更方便的是直接在保存时加一个enc的参数例如:w ++enc=utf-8

encoding

vim配置文件里还有一个encoding变量,又是干啥滴呢?encoding是vim的程序内部使用的编码类型。前面提到vim猜出文件的编码之后,如果这个编码个内部自己使用的不一样,就会进行转化,同理,在保存时又会转化回去。这个编码类型和用户使用的关系不大,当vim在读写文件读写时会自动进行转换。

最后再说一个参数: ++enc 这个参数可以强制让vim在文件读写时使用特定的编码,例如:

:e ++enc=utf-8 normal.txt
使用utf-8编码打开normal.txt文件。

:w ++enc=utf-8 normal.txt
使用把normal.txt存为utf-8编码文件。

利用这两个命令可以很方便地对文件行编码转换。

你可能感兴趣的:(gVim里编码的故事)