更新履歴
- WinMergeをインストール不要で使う!ポータブル版の導入手順とメリットを解説
- 【完全ガイド】WinMergeでバイナリ比較をする方法
- SwaggerとOpenAPIの違いを徹底解説!仕様とツールの関係性を理解する
- 【Python】ファイル存在チェックの実装方法(pathlib、os.path)
- Pythonで文字列を除去する方法を完全解説!strip・replace・正規表現
- スタック領域とヒープ領域の違いとは?メモリ管理から使い分けまで徹底解説
- Python Docstringの書き方完全ガイド|主要スタイルの比較と保守性を高める記述
- シングルトン(Singleton)デザインパターンを徹底解説!Java実装例・メリット・デメリット
- サインインとログインの違いとは?意味・使い分けをわかりやすく解説
- 静的サイトと動的サイトの違いを徹底比較!メリット・デメリットと選び方を解説
- モノリスとマイクロサービスの違いを徹底比較|メリット・デメリットと失敗しない選定基準
- RESTとSOAPの違いを徹底比較!特徴・メリット・使い分けを解説
- 同期・非同期とブロッキング・ノンブロッキングの違い|概念と使い分けを徹底比較
- マルチプロセスとマルチスレッドの違いを解説!メリット・デメリット・使い分け
- hostsファイルとDNSの違いとは?優先順位・仕組み・使い分けを解説
- Excelで複数行を1行にまとめる方法まとめ【関数・PQ対応】
- レスポンスタイムとターンアラウンドタイムの違い【基本情報対策】
- ステートレスとステートフルの違いを徹底解説!エンジニアが知るべき仕組みと具体例
- shとbashの違いを徹底解説!シェルスクリプトの使い分け
- 【徹底比較】イーサネットとWi-Fi違いと選び方を解説
お役立ちツール
この記事は役に立ちましたか?
Linuxユーザにお勧めの本
vimで日本語のファイルを開いたときに「文字が読めない」「記号ばかりになる」といった 文字化け に悩まされたことはありませんか?特にWindows、Linux、macOSなど異なるOS間でファイルをやり取りする場合、文字コードの不一致はよく発生する問題です。
本記事では、 vim 文字化け の原因から、今すぐ直せるコマンド、そして二度と困らないための恒久的な設定方法まで、初心者の方にも分かりやすく徹底解説します。
[!NOTE] この記事のポイント
- 原因は文字コードの不一致: ファイルの保存形式とvimの認識、またはターミナルの設定がズレていることが原因です。
- 一時的な対処:
:e ++enc=[文字コード]コマンドを使って、正しい文字コードでファイルを読み直します。- 恒久的な対処:
.vimrcにencodingとfileencodingsの設定を追加し、自動判別を有効にします。- 環境設定も重要: サーバー側だけでなく、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などで fileencodings や encoding が適切に設定されていないと、vimがファイルを誤った文字コードとして判定する場合があります。
ターミナルとvimの設定不整合
ターミナルの文字コード設定がvimと合っていないと、表示が文字化けするほか、コピー&ペースト時に文字が壊れる場合があります。
vimエンコーディングの設定手順
vimで開いたファイルが文字化けした場合は、:e ++enc=[文字コード]を指定して開きなおします。恒久的に対応する場合は、vimの設定ファイルを編集し、デフォルトの文字コードを変更する必要があります。
以下UTF-8のファイルを例に説明します。
$ cat sample.txtvim文字コードの確認テストです。vimでファイルを開きます。
vim sample.txt以下のように文字化けして表示されることを確認しました。

コマンドで文字化けを直す(一時的な対処)
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など
" エンコーディング設定set encoding=utf-8set fileencodings=utf-8,cp932,euc-jp| 設定項目 | 意味 |
|---|---|
encoding | vimが内部的に使用する文字コード。常に utf-8 にしておくのが無難です。 |
fileencodings | 既存のファイルを開く際、上から順番に自動判別を試みるリスト。 |
[!TIP]
fileencodingsの順序は重要です。UTF-8 を先頭にして、その後にcp932やeuc-jpを記述しておくと、多くの日本語ファイルは自動判別で正しく開けるようになります。
ただし、UTF-8 と Shift_JIS などがどちらとしても解釈できてしまうようなケースでは、まれに誤判定が起きることがある点には注意してください。
vimrcファイル編集後は、文字化けしていたファイルを再度開いてください。
vim sample.txt文字化けが発生していないことを確認します。

~/.vimrc(ユーザー個別の設定)
個人の作業環境であれば、ホームディレクトリにある ~/.vimrc を編集するのが一般的です。ファイルがない場合は新規作成してください。
vim ~/.vimrcTera Termでのエンコーディング設定方法
Tera TermはWindowsユーザーに人気の高いターミナルソフトですが、デフォルトのエンコーディングがUTF-8以外に設定されている場合があり、vimの文字化けの原因になることがあります。
文字コード設定手順
- Tera Termを起動
- 上部メニューから 「設定」→「端末」 をクリック
- 「受信:文字コード」で 「UTF-8」 を選択
- 「送信:文字コード」で 「UTF-8」 を選択
- OKを押して保存
TERATERM.INIに設定を保存する
- 上部メニューから 「設定」→「設定の保存」
TERATERM.INIとして保存し、次回以降も自動でUTF-8が使われるようにします
この設定によって、vimやサーバー上で編集した日本語ファイルがTera Term上で正しく表示されるようになります。
また、Tera Termのフォント設定も日本語対応フォント(例:MS Gothic、Meiryo)を使うことで、文字化けのリスクをさらに軽減できます。
まとめ:vimの文字化けを完全に防ぐには
.vimrcでUTF-8を明示的に設定するfileencodingsを複数定義して柔軟に対応できるようにする- ターミナル側もUTF-8に設定する
- OS間のファイル移動後は一度エンコーディングを確認する
- UTF-8で保存するよう他のエディタ(VSCodeなど)も設定する
vimでの文字化けは、設定ファイルのミス・ターミナルとの不整合・エンコーディングの知識不足が原因の大半です。 これらを意識すれば、ほとんどの文字化け問題は回避または修復できます。

【GitBash】文字コードの変更方法(文字化け対策)
GitBashで日本語の出力が文字化けした場合、localeの設定がSJISになっていない可能性があります。本記事では日本語の文字化けを解消するGitBashの設定方法を解説します。
Linuxユーザにお勧めの本
以上で本記事の解説を終わります。
よいITライフを!