Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5695

[vim] Vimの文字コードの認識の仕組みと、文字化けを減らすための設定

$
0
0

Vimで文字化けを防ぐための設定に関する記事が結構見つかるのですが、 Help に記載されている文字認識のルールをきちんと解説していることが少ないようですので、基本に帰ってそのあたりから原則を書いてみます。

基本的な考え方

登場する設定値は以下になります。

役割
encodingVim が内部処理に利用する文字コード。ただし、文字コード判定に失敗した場合はファイルの文字コードの最後の選択肢として利用される場合がある。
fileencodingsVim が 既存ファイルの文字コード推定に使う文字コードのリスト。
fileencoidngローカル設定値は、文字コード推定の結果Vimが設定する。グローバル設定は 新規ファイルを作成する際の文字コードとして利用される。

判定ルールは以下の通り。

  1. 既存のファイルを開いた場合、以下の手順で fileencodingが選択されます:
    1. fileencodingsのリストを最初から順番に試し、エラーが発生しなかったものが fileencodingの値として設定されます。
    2. fileencodingsをすべてでエラーが発生した場合は fileencodingの値は空になります。この場合、ファイルの文字コードとしては encodingに設定されている値を利用します。
  2. 新しいファイルを開いた場合、 fileencodingsの値は無視され、fileencodingのグローバル設定の値が利用されます。

.vimrcに指定べきおすすめの設定

日本語をデフォルトの文字として使う方々におすすめの設定は以下の通り(確認した環境は Vim 8.2 MS-Windows 32 ビット版の公式配布バイナリです)

  1. encodingの値は、使っている環境により選択してください。
    • Windows 版の場合は、cp932がおすすめです。utf-8を利用すると文字送りが崩れる場合があります。
    • それ以外の環境では utf-8を利用すればよいでしょう。
  2. fileencodingの値を setglobalで設定しておきましょう。この値は利用者が新しくファイルを作る場合に使用するべき文字コードを設定してください。
  3. fileencodingsは、判定でエラーになりやすい順番で書くのがおすすめです。
    • どの値を利用するべきかの良い参考記事を上げておきます:

これらを反映し、私は以下のような設定にしています。

この設定値は後ほど公開します。

Help をきちんと読んでみましょう

このあたりの詳細の仕様については、 fileencodingに関するヘルプに書いてありますので、一度以下を見てみることをおすすめします。

:help fileencodings

げ、英語だ… と思った方は以下の翻訳が役に立つと思われます:


Viewing all articles
Browse latest Browse all 5695

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>