web-dev-qa-db-ja.com

Vimでエンコードとファイルエンコードをutf-8に設定する

これら2つのコマンドの違いは何ですか?

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

Utf-8を使用する場合、両方を設定する必要がありますか?

また、setまたはsetglobalでfileencodingを設定する必要がありますか?

86
Kiraly Zoltan

TL; DR

set encoding=utf-8の最初のケースでは、ターミナルでshownである出力エンコーディングを変更します。

set fileencoding=utf-8の2番目のケースでは、writtenであるファイルの出力エンコーディングを変更します。

@Dennisが述べているように、常にutf-8で作業したい場合は、〜/ .vimrcで両方を設定できます。

詳細

nicodeの操作に関するVIMのwiki から

encodingは、vimが内部で文字を表す方法を設定します。UnicodeのほとんどのフレーバーにはUtf-8が必要です。」

"fileencodingは特定のファイルのエンコーディングを設定します(バッファに対してローカル)。:setglobalはデフォルト値を設定します。空の値は使用:デフォルトは 'encoding'と同じ、またはucsエンコーディングの1つを設定したい場合、特定の文字の組み合わせに応じて同じディスクファイルを大きくしたり小さくしたりできます。また、IIUC、utf-8は常にビッグエンディアン(高ビットが最初)である一方、ucsはビッグエンディアンまたはリトルエンディアンになる可能性があるため、使用する場合は、おそらく 'bomb'を設定する必要があります(以下を参照)。

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

Utf-8を常に使用したい場合は、~/.vimrcで両方を設定することもできます。

81
Dennis