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


95

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

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

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

また、setまたはでファイルエンコーディングを設定する必要がありsetglobalますか?


Unicode以外のファイルを編集する場合に備えて、Vimで強制的にエンコードするよりも、LOCALEでエンコードを設定する方が安全であることに注意してください。デフォルトのLOCALEと同じ結果が得られ、出会っても外部の文字を台無しにすることはありません。
timss

回答:


89

TL; DR

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

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

@Dennisで述べたように、あなたは常にで作業したい場合は、あなたの〜/ .vimrcとでそれらの両方を設定することができますutf-8

もっと詳しく

Unicodeの操作に関するVIMwikiから

vimが文字を内部的にencodingどのように表現するかを設定します。ほとんどの種類のUnicodeにはUtf-8が必要です。」

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


3
すみません、よくわかりません。fileencodingはより正確に何をしますか?
キラリーゾルタン

25
最初のケースでは、ターミナルに表示される出力エンコーディングを変更します。2番目のケースでは、書き込まれるファイルの出力エンコーディングを変更します。
エイドリアンラクロワ

1
+1公式ドキュメントを繰り返すだけでなく、短くて甘い答えを求めて!:)
425nesp

必要に応じて、コマンドラインから直接アドホックvim -c "set encoding=utf-8" file.ext
Hans Ginzel

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

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


0

.vimrcで変数「fileencodings」を設定できます。

これは、既存のファイルの編集を開始するときに考慮される文字エンコーディングのリストです。ファイルが読み込まれると、Vimは最初に言及した文字エンコーディングを使用しようとします。エラーが検出された場合、リストの次のエラーが試行されます。機能するエンコーディングが見つかると、「fileencoding」がそれに設定されます。すべて失敗した場合、「fileencoding」は空の文字列に設定されます。つまり、「encoding」の値が使用されます。

見る :help filencodings

たとえばcp1252を頻繁に使用する場合は、そこに追加できます。

set fileencodings=ucs-bom,utf-8,cp1252,default,latin9
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.