跳转到内容

编码

:echo &fileencoding

此项目配置的是 Vim 的默认显示编码。如果你打开的文件编码与该属性配置的编码不同,那么 Vim 会将编码自动转换到配置编码再显示。

是 Vim 用于屏幕显示的编码。在显示的时候,Vim 会把内部编码转换为屏幕编码再用于输出。内部编码中含有无法转换为屏幕编码的字符时,该字符会变成问号,但不会影响对它的编辑操作。如果 termencoding 没有设置,则直接使用 encoding 不进行转换。

此项目配置的是一个编码列表。Vim 在读取文件的时候,会根据这里的编码自动检测,如果检测失败则尝试下一个,直到检测成功为止。如果一直没有转换成功,则此值会为空。

这个项目配置的是新建文件和保存文件时文件的编码。如果它的值与 encoding(enc) 不一样,那么保存的时候 Vim 会自动把文件内容由 encoding(enc) 的编码转换为 fileencoding(fenc) 配置编码再保存。而读取文件的时候,该选项的值会自动同步为 fileencodings(fencs) 配置的有效编码。

如果我们配置:

encoding(enc):utf-8
fileencodings(fencs):utf-8, cp936
fileencoding(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 文件了。