【Linux】viコマンド(vim)で開いたファイルが文字化けした場合の対処法

【Linux】viコマンド(vim)で開いたファイルが文字化けした場合の対処法

Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:3,195 / 総アクセス数:1,866 views

vimで日本語ファイルを扱う際に必須のエンコーディング設定を丁寧に解説します。vimで開いたファイルが文字化けしていた場合は「:set encoding」で文字コードを変更します。恒久的な対応は、vimrcファイルに設定を追加します。encodingやfileencodingの違いを理解し、柔軟に文字化け対応できるようになりましょう。

vimで日本語のファイルを開いたときに「文字が読めない」「記号ばかりになる」といった 文字化け に悩まされたことはありませんか?特にWindows、Linux、macOSなど異なるOS間でファイルをやり取りする場合、文字コードの不一致はよく発生する問題です。

本記事では、 vim 文字化け の原因から、今すぐ直せるコマンド、そして二度と困らないための恒久的な設定方法まで、初心者の方にも分かりやすく徹底解説します。

[!NOTE] この記事のポイント

  • 原因は文字コードの不一致: ファイルの保存形式とvimの認識、またはターミナルの設定がズレていることが原因です。
  • 一時的な対処: :e ++enc=[文字コード] コマンドを使って、正しい文字コードでファイルを読み直します。
  • 恒久的な対処: .vimrcencodingfileencodings の設定を追加し、自動判別を有効にします。
  • 環境設定も重要: サーバー側だけでなく、Tera Termなどのターミナル側の文字コード設定(UTF-8等)も合わせる必要があります。

正しくない文字コードによる文字化け

文字化けとは、正しい文字コードで表示されていないことで、記号や意味不明な文字列になってしまう現象です。例えば、本来「こんにちは」と表示されるはずの文字列が「ÓÂáÓÉ」のようになるケースがあります。

vimで起きやすい文字化けの特徴

  • 日本語が「??」や記号で表示される
  • 改行位置が崩れる
  • 特定の行だけ表示が乱れる

こうした文字化けのほとんどは、エンコーディングの不一致が原因です。

なぜvimで文字化けが起こるのか?

vimの文字化けは、次のような原因で発生します。

エンコーディングの不一致

  • ファイルのエンコーディングが「UTF-8」なのに、vimが「Shift_JIS」で解釈している場合
  • 編集環境(ターミナルやOS)とvimの設定が違う

UTF-8とShift_JISの混在

  • Windowsで作成されたファイルがShift_JISになっていることが多い
  • macOSやLinuxではUTF-8が標準

OS間でのファイル移動

USBメモリやクラウドで単純にコピーしただけでは、文字コード自体が変わることはありません。
ただし、別のOSやエディタで開いて再保存した場合に、保存時の設定によって文字コードが変更されることがあります。また、FTPのASCII転送モードなどを使用した場合にも、意図せず変換が行われることがあります。(改行コードの変換に加えて、文字コード変換を行うサーバー設定になっているケースなど。)

設定ファイルの干渉

.vimrcなどで fileencodingsencoding が適切に設定されていないと、vimがファイルを誤った文字コードとして判定する場合があります。

ターミナルとvimの設定不整合

ターミナルの文字コード設定がvimと合っていないと、表示が文字化けするほか、コピー&ペースト時に文字が壊れる場合があります。

vimエンコーディングの設定手順

vimで開いたファイルが文字化けした場合は、:e ++enc=[文字コード]を指定して開きなおします。恒久的に対応する場合は、vimの設定ファイルを編集し、デフォルトの文字コードを変更する必要があります。

以下UTF-8のファイルを例に説明します。

確認例
$ cat sample.txt
vim文字コードの確認テストです。

vimでファイルを開きます。

コマンド
vim sample.txt

以下のように文字化けして表示されることを確認しました。

画像1

コマンドで文字化けを直す(一時的な対処)

vimでファイルを開いた後に文字化けしていることに気づいた場合、まず現在のファイルの文字コードを確認しましょう。

コマンド
:set fileencoding?

fileencoding=[現在の文字コード] が表示されます。ここで表示される値は、vim が「このファイルをどの文字コードとして扱い、保存時もその文字コードで書き出すか」を示します。
※ 自動判別に失敗している場合、実際の文字コードと異なる値になり、その状態で保存すると 別の文字コードで上書きされてしまう ことがあるので注意してください。

そのうえで、正しい文字コードを指定して読み直します。

:e ++enc=[文字コード]で開き直す

:e ++enc=[文字コード]で指定した文字コードでファイルを「開き直す」ことができます。

コマンド
:e ++enc=utf-8

※ 未保存の変更がある場合はエラーになります。
必要に応じて :e! ++enc=utf-8 で強制再読込できます。

ファイルの元の文字コードにあわせて、cp932 (Shift_JIS) や euc-jp なども試してみてください。

vimを立ち上げるたびに手動で設定するのは面倒なため、設定ファイルに記述して自動化しましょう。

/etc/vim/vimrc(システム全体の設定)

サーバー全体で共通の設定を適用したい場合は、システムのvimrcを編集します。

※ ファイルの場所はディストリビューションによって異なります。 例:

  • Debian/Ubuntu系:/etc/vim/vimrc
  • RHEL/CentOS系:/etc/vimrc
  • macOS(Homebrew版):/opt/homebrew/etc/vimrc など
設定例 (~/.vimrc)
" エンコーディング設定
set encoding=utf-8
set fileencodings=utf-8,cp932,euc-jp
設定項目意味
encodingvimが内部的に使用する文字コード。常に utf-8 にしておくのが無難です。
fileencodings既存のファイルを開く際、上から順番に自動判別を試みるリスト。

[!TIP] fileencodings の順序は重要です。UTF-8 を先頭にして、その後に cp932euc-jp を記述しておくと、多くの日本語ファイルは自動判別で正しく開けるようになります。
ただし、UTF-8 と Shift_JIS などがどちらとしても解釈できてしまうようなケースでは、まれに誤判定が起きることがある点には注意してください。

vimrcファイル編集後は、文字化けしていたファイルを再度開いてください。

コマンド
vim sample.txt

文字化けが発生していないことを確認します。

画像6

~/.vimrc(ユーザー個別の設定)

個人の作業環境であれば、ホームディレクトリにある ~/.vimrc を編集するのが一般的です。ファイルがない場合は新規作成してください。

コマンド
vim ~/.vimrc

Tera Termでのエンコーディング設定方法

Tera TermはWindowsユーザーに人気の高いターミナルソフトですが、デフォルトのエンコーディングがUTF-8以外に設定されている場合があり、vimの文字化けの原因になることがあります。

文字コード設定手順

  1. Tera Termを起動
  2. 上部メニューから 「設定」→「端末」 をクリック
  3. 「受信:文字コード」で 「UTF-8」 を選択
  4. 「送信:文字コード」で 「UTF-8」 を選択
  5. OKを押して保存

TERATERM.INIに設定を保存する

  1. 上部メニューから 「設定」→「設定の保存」
  2. TERATERM.INI として保存し、次回以降も自動でUTF-8が使われるようにします

この設定によって、vimやサーバー上で編集した日本語ファイルがTera Term上で正しく表示されるようになります。

また、Tera Termのフォント設定も日本語対応フォント(例:MS Gothic、Meiryo)を使うことで、文字化けのリスクをさらに軽減できます。

まとめ:vimの文字化けを完全に防ぐには

  1. .vimrcでUTF-8を明示的に設定する
  2. fileencodingsを複数定義して柔軟に対応できるようにする
  3. ターミナル側もUTF-8に設定する
  4. OS間のファイル移動後は一度エンコーディングを確認する
  5. UTF-8で保存するよう他のエディタ(VSCodeなど)も設定する

vimでの文字化けは、設定ファイルのミス・ターミナルとの不整合・エンコーディングの知識不足が原因の大半です。 これらを意識すれば、ほとんどの文字化け問題は回避または修復できます。

【GitBash】文字コードの変更方法(文字化け対策)
ITナレッジライフ

【GitBash】文字コードの変更方法(文字化け対策)

GitBashで日本語の出力が文字化けした場合、localeの設定がSJISになっていない可能性があります。本記事では日本語の文字化けを解消するGitBashの設定方法を解説します。

Linuxユーザにお勧めの本

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ


以上で本記事の解説を終わります。
よいITライフを!

Linuxユーザにお勧めの本

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

人気記事


記事を評価

Thanks!
目次
Scroll to Top