2013-05-12 52 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中設置。