在 Vim 中将编码和文件编码设置为 utf-8

这两个命令之间有什么区别?

  • set encoding=utf-8
  • set fileencoding=utf-8

当我想使用 utf-8时,是否需要同时设置这两个值?

还有,我需要用 setsetglobal设置文件编码吗?

158245 次浏览

DR

在使用 set encoding=utf-8的第一种情况下,您将更改终端中的 显示输出编码。

set fileencoding=utf-8的第二种情况下,您将更改文件 写好了的输出编码。

如@Dennis 所述,如果您总是想在 utf-8中工作,那么可以在 ~/. vimrc 中同时设置它们。

更多细节

来自 关于使用 unicode 的 VIM 维基

encoding设置了大多数 Unicode 风格都需要 vim shall represent characters internally.UTF-8的方式。”

fileencoding设置 特定文件的编码(从本地到缓冲区) ; : setglobal 设置默认值。也可以使用空值: 它的默认值与“ coding”相同。或者你可能想设置一个 ucs 编码,它可能使相同的磁盘文件根据你特定的字符组合变大或变小。另外,IIUC,utf-8总是 big-endian (高位优先) ,而 ucs 可以是 big-endian 或 little-endian,所以如果使用它,可能需要设置“ Bomb”(见下文)

set encoding=utf-8  " The encoding displayed.
set fileencoding=utf-8  " The encoding written to file.

如果您总是想使用 utf-8,那么您可以在 ~/.vimrc中同时设置这两个值。

您可以在.vimrc 中设置变量‘ fileencode’。

这是开始编辑时考虑的字符编码列表 当读取一个文件时,Vim 尝试使用第一个 如果检测到一个错误,下一个字符编码 当发现一个可以工作的编码时, 如果全部失败,则将“ filecoding”设置为 an empty string, which means the value of 'encoding' is used.

See :help filencodings

如果你经常使用 cp1252,你可以在这里添加:

set fileencodings=ucs-bom,utf-8,cp1252,default,latin9