编码
获取当前文件编码
Section titled “获取当前文件编码”:echo &fileencoding
encoding(enc)
Section titled “encoding(enc)”此项目配置的是 Vim 的默认显示编码。如果你打开的文件编码与该属性配置的编码不同,那么 Vim 会将编码自动转换到配置编码再显示。
termencoding
Section titled “termencoding”是 Vim 用于屏幕显示的编码。在显示的时候,Vim 会把内部编码转换为屏幕编码再用于输出。内部编码中含有无法转换为屏幕编码的字符时,该字符会变成问号,但不会影响对它的编辑操作。如果 termencoding
没有设置,则直接使用 encoding
不进行转换。
fileencodings(fencs)
Section titled “fileencodings(fencs)”此项目配置的是一个编码列表。Vim 在读取文件的时候,会根据这里的编码自动检测,如果检测失败则尝试下一个,直到检测成功为止。如果一直没有转换成功,则此值会为空。
fileencoding(fenc)
Section titled “fileencoding(fenc)”这个项目配置的是新建文件和保存文件时文件的编码。如果它的值与 encoding(enc)
不一样,那么保存的时候 Vim 会自动把文件内容由 encoding(enc)
的编码转换为 fileencoding(fenc)
配置编码再保存。而读取文件的时候,该选项的值会自动同步为 fileencodings(fencs)
配置的有效编码。
如果我们配置:
encoding(enc):utf-8fileencodings(fencs):utf-8, cp936fileencoding(fenc):cp936
那么我们打开一个 cp936 编码的文件,Vim 会将内容转换为 utf-8 格式来显示,但是保存的时候文件的编码却依然是 cp936。
如果我的工作环境主要是编辑 utf-8,偶尔会修改一下 cp936 的编码,我们该怎么配置呢?
首先我们可以把 fileencoding
留空,然后只配置 fileencodings(fencs):utf-8, cp936
。按照上面的规则,Vim 就会自动把文件保存为 cp936 的编码了。
如果我编辑了一个 utf-8 文件,想把它以 cp936 的格式保存,该怎么办呢?
在命令行模式输入:
:set fenc=cp936
然后保存文件即可。保存之后再输入:
:set fenc=utf-8
就可以继续编辑其他 utf-8 文件了。