这两个命令有什么区别?
set encoding=utf-8
set fileencoding=utf-8
当我想使用utf-8时,是否需要同时设置?
另外,我是否需要使用set
或setglobal
设置fileencoding?
答案 0 :(得分:78)
set encoding=utf-8 " The encoding displayed.
set fileencoding=utf-8 " The encoding written to file.
如果您一直想使用utf-8,也可以在~/.vimrc
中同时设置。
答案 1 :(得分:77)
在
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