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

时间:2013-05-12 13:17:56

标签: vim encoding

这两个命令有什么区别?

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

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

另外,我是否需要使用setsetglobal设置fileencoding?

3 个答案:

答案 0 :(得分:78)

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

如果您一直想使用utf-8,也可以在~/.vimrc中同时设置。

答案 1 :(得分:77)

TL; DR

  

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

     

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

正如@Dennis所述,如果你总是想在utf-8工作,你可以在〜/ .vimrc中设置它们。

更多细节

来自wiki of VIM about working with unicode

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

fileencoding设置特定文件的编码(缓冲区本地);:setglobal设置默认值。也可以使用空值:默认为与'encoding'相同。或者您可能想要设置其中一个ucs编码,它可能会使相同的磁盘文件变大或变小,具体取决于您的特定字符组合。此外,IIUC,utf-8始终是big-endian(高第一位)虽然ucs可以是big-endian或little-endian,所以如果你使用它,你可能需要设置'bomb'(见下文)。“

答案 2 :(得分:0)

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

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

请参见:help filencodings

如果您经常与例如cp1252,您可以在此处添加它:

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