2013-05-12 54 views
66

这两个命令之间有什么区别?在Vim中将编码和文件编码设置为utf-8

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

我需要同时设置时,我想使用UTF-8?

此外,我是否需要使用setsetglobal来设置文件编码?

+0

请注意,在LOCALE中设置编码比在Vim中强制编码更安全,以防编辑非Unicode文件。你会得到相同的结果,因为它会默认为LOCALE,如果遇到,你不会弄乱任何外来字符。 – timss 2013-05-13 00:12:17

回答

56

TL; DR

在第一种情况与set encoding=utf-8,你会改变输出编码在终端显示即是。

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

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

更多细节

wiki of VIM about working with unicode

encodingVIM应如何表示字符内部。UTF-8是必要的Unicode的大多数口味。”

fileencoding设置编码特定文件(局部于缓冲区);:setglobal集的默认值的空值还可以用于:默认为相同为‘编码’或者可能。想要设置一个ucs编码,它可能会根据你的特殊字符混合使相同的磁盘文件变大或变小。另外,IIUC,utf-8总是大端(高位在先),而ucs可以是大的, endian或little-endian的,所以如果你使用它,你可能需要设置“炸弹‘(见下文)。’

+1

对不起,我不明白。 fileencoding究竟做了什么更确切的事情? – 2013-05-12 14:01:44

+22

在第一种情况下,您将更改终端中显示的输出编码。在第二种情况下,您将更改写入文件的输出编码。 – 2013-05-12 14:03:57

+0

+1对于简短和甜蜜的回答,而不是仅仅重复官方文档! :) – 425nesp 2013-09-09 09:37:19

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

您可能如果您始终想要使用utf-8,请在~/.vimrc中设置。