111

这两个命令有什么区别?

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

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

另外,我需要用setor设置文件编码setglobal吗?

4

3 回答 3

106

TL;博士

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

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

正如@Dennis 所说,如果您总是想在utf-8.

更多细节

来自VIM 的 wiki 关于使用 unicode

"encoding设置vim 如何在内部表示字符。Utf-8 对于大多数 Unicode 风格都是必需的。"

"fileencoding设置特定文件的编码(本地到缓冲区); :setglobal 设置默认值。也可以使用空值:默认与 'encoding' 相同。或者您可能想要设置其中一种 ucs 编码,它可能会根据您的特定字符组合使相同的磁盘文件更大或更小。此外,IIUC, utf-8 始终是大端(高位优先),而 ucs 可以是大端或小端,所以如果你使用它,您可能需要设置“炸弹”(见下文)。”

于 2013-05-12T13:23:32.373 回答
93
set encoding=utf-8  " The encoding displayed.
set fileencoding=utf-8  " The encoding written to file.

~/.vimrc如果你总是想使用 utf-8,你也可以在你的中设置两者。

于 2014-01-17T21:20:03.427 回答
0

您可以在 .vimrc 中设置变量 'fileencodings'。

这是开始编辑现有文件时考虑的字符编码列表。当一个文件被读取时,Vim 尝试使用第一个提到的字符编码。如果检测到错误,则尝试列表中的下一个错误。当找到一个有效的编码时,'fileencoding' 被设置为它。如果全部失败,'fileencoding' 设置为空字符串,这意味着使用 'encoding' 的值。

:help filencodings

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

set fileencodings=ucs-bom,utf-8,cp1252,default,latin9
于 2020-01-02T23:41:28.100 回答