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

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

当ページのリンクには広告が含まれています。

記事の文字数:2902

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


スポンサーリンク

Vimで日本語のファイルを開いたときに「文字が読めない」「記号ばかりになる」といった 文字化け に悩まされたことはありませんか?特にWindowsやLinux、macOSなど異なる環境で作業する場合、この問題はとても厄介です。

本記事では、 Vim 文字化け というキーワードに焦点をあて、初心者でも分かりやすいように原因とその解決策を徹底的に解説していきます。設定ファイルの調整からコマンドの活用方法まで、今日からすぐに使える知識をまとめました。

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

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

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

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

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

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

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

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

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

UTF-8とShift_JISの混在

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

OS間でのファイル移動

  • ファイルをUSBメモリやクラウドで移動したときに文字コードが変わってしまうことも。

設定ファイルの干渉

.vimrcなどで異なる文字コードが設定されていると、新しいファイルでも誤って読み込まれます。

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

ターミナルの文字コード設定がVimと合っていないと、見た目だけでなく内部的にも誤った処理がされます。

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

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

確認した環境

Debian 12.5

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

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

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

コマンド
vim sample.txt

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

画像1

setc encで編集する

まず現在の文字コードを確認します。
vimのコマンドモードで、以下コマンドを実行してください。

コマンド
:set enc?

:set enc?実行前キャプチャ

画像2

:set enc?実行後キャプチャ

画像3

encoding=[現在の文字コード]が表示されることを確認してください。
キャプチャではlatin1が設定されていることを確認できました。

開いているファイルの文字コードを変更します。
vimのコマンドモードで:set encoding=[文字コード]を指定します。

以下コマンドはUTF-8に変更する例となります。

コマンド
:set encoding=utf-8

:set encoding=utf-8実行前

画像4

:set encoding=utf-8実行後

画像5

UTF-8で書かれたファイルであれば、文字化けが直ります。
文字化けが直らない場合は、他の文字コードも試してみてください。

vimrcファイル編集(恒久的な対処)

vimで開いたファイルのデフォルト文字コードを変更する場合は、以下ファイルを編集します。

コマンド
vim /etc/vim/vimrc

vimには複数のエンコーディング関連設定があります。

設定項目意味
encoding内部的に使う文字コード(通常はUTF-8)
fileencodingファイルの保存時の文字コード
fileencodings既存ファイルを開くときに試す文字コードの優先順位リスト
termencodingターミナルとの通信時の文字コード
fileformatsファイルの改行コードの読み書きに関する設定(unix:LF、dos:CRLF)

最も安定する方法は、vimをUTF-8前提に設定することです。
例えばvimrcの末尾に以下5行を追記します。

/etc/vim/vimrc
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8,cp932,euc-jp
set termencoding=utf-8
set fileformats=unix,dos

※他の文字コードを使用する場合は、utf-8を置き換えてください。

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

コマンド
vim sample.txt

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

画像6

vimのコマンドモードで以下を実行し、文字コードが変わっていることも確認してください。

コマンド
:set enc?

:set enc?実行前

画像7

:set enc?実行後

画像8

encoding=[設定した文字コード]が表示されればOKです。

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

Linuxユーザにお勧めの本

新しいLinuxの教科書 第2版

新品価格
¥2,970 から
(2025/5/24 10:23時点)

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

新品価格
¥2,587 から
(2025/4/22 20:54時点)

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

新品価格
¥2,475 から
(2025/4/22 21:13時点)


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