症状
Neo-treeでファイル/フォルダのアイコンが表示されず、豆腐(□)や文字化けになる
結論:まずこれを確認
- Nerd Fonts対応フォントがインストールされているか
- ターミナルでそのフォントを使用しているか
nvim-web-deviconsプラグインがインストールされているか
操作フロー
flowchart TD
A[アイコンが表示されない] --> B{ターミナルで<br>Nerd Fontsを使用?}
B -->|No| C[Nerd Fontsをインストール]
B -->|Yes| D{nvim-web-devicons<br>インストール済?}
C --> C1[ターミナル設定を変更]
C1 --> D
D -->|No| E[プラグインを追加]
D -->|Yes| F{:checkhealth<br>nvim-web-devicons}
E --> F
F -->|エラーあり| G[エラー内容を確認]
F -->|OK| H[neo-tree設定を確認]
G --> I[該当セクションへ]
H --> J[アイコン設定を確認]
よくある原因
- Nerd Fontsがインストールされていない - アイコン表示に必須のフォント
- ターミナルで通常フォントを使用している - インストールしても設定が必要
- nvim-web-deviconsがインストールされていない - neo-treeの依存プラグイン
- フォントのバージョンが古い - Nerd Fonts v3で変更された箇所がある
- SSHやtmux経由で接続している - ローカル側のフォント設定が影響
- GUIのNeovim(Neovide等)でフォント未設定 - 別途guifont設定が必要
操作手順
ステップ1: Nerd Fontsのインストール状態を確認する
ターミナルで以下のコマンドを実行し、Nerd Fonts対応フォントがあるか確認する。
# Linux
fc-list | grep -i "nerd"
# macOS
fc-list | grep -i "nerd"
# または
ls ~/Library/Fonts | grep -i "nerd"
🔍 チェックポイント: フォント名が1つ以上表示されれば、インストールはされている
インストールされていない場合:
# macOS (Homebrew)
brew tap homebrew/cask-fonts
brew install --cask font-hack-nerd-font
# Ubuntu/Debian
sudo apt install fonts-hack-nerd
# 手動インストール(全OS共通)
# https://www.nerdfonts.com/font-downloads からダウンロード
ステップ2: ターミナルのフォント設定を確認する
各ターミナルの設定画面でフォントを確認する。
| ターミナル | 設定場所 |
|---|---|
| iTerm2 | Preferences → Profiles → Text → Font |
| Alacritty | ~/.config/alacritty/alacritty.toml |
| WezTerm | ~/.config/wezterm/wezterm.lua |
| Windows Terminal | Settings → Profiles → Appearance → Font face |
| GNOME Terminal | Preferences → Profiles → Custom font |
Alacrittyの設定例:
[font]
normal = { family = "Hack Nerd Font", style = "Regular" }
size = 12.0
WezTermの設定例:
return {
font = wezterm.font("Hack Nerd Font"),
font_size = 12.0,
}
🔍 チェックポイント: フォント名に「Nerd」が含まれているか確認
ステップ3: nvim-web-deviconsのインストールを確認する
Neovimを起動し、以下を実行する。
:lua print(vim.inspect(package.loaded["nvim-web-devicons"]))
🔍 チェックポイント: nil と表示された場合、プラグインが読み込まれていない
lazy.nvimでのインストール例(~/.config/nvim/lua/plugins/neo-tree.lua):
return {
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons", -- ← これが必要
"MunifTanjim/nui.nvim",
},
}
ステップ4: checkhealthで診断する
:checkhealth nvim-web-devicons
🔍 チェックポイント: すべてOKになっているか確認。WARNINGやERRORがあれば内容を確認
ステップ5: neo-treeのアイコン設定を確認する
neo-treeの設定でアイコンが無効になっていないか確認する。
require("neo-tree").setup({
default_component_configs = {
icon = {
folder_closed = "",
folder_open = "",
folder_empty = "",
default = "*", -- ← ここが "*" などになっていると表示されない
},
},
})
🔍 チェックポイント: icon 設定がデフォルトから変更されていないか
ステップ6: GUIのNeovimの場合はguifontを設定する
Neovide、VimR、nvim-qtなどを使用している場合:
-- ~/.config/nvim/init.lua
if vim.g.neovide then
vim.o.guifont = "Hack Nerd Font:h12"
end
🔍 チェックポイント: :set guifont? で設定されたフォントを確認
NG行動
- 通常フォントとNerd Fontsを混同する - 「Hack」と「Hack Nerd Font」は別のフォント
- フォントインストール後にターミナルを再起動しない - フォントキャッシュが更新されていない可能性
- SSH接続時にリモート側だけフォント設定する - 表示はローカルのターミナル依存
- Nerd Fonts v2用の設定をv3で使う - 一部アイコンのコードポイントが変更されている
よくある質問(FAQ)
Q1: 一部のアイコンだけ表示されない場合は?
A: Nerd Fontsのバージョン不一致の可能性がある。nvim-web-devicons とフォントのバージョンを確認し、両方を最新にする。
Q2: tmux経由だとアイコンが表示されない場合は?
A: tmuxの設定に以下を追加する。
# ~/.tmux.conf
set -g default-terminal "tmux-256color"
set -as terminal-features ",*:RGB"
Q3: WSL2でアイコンが表示されない場合は?
A: Windows側のターミナル(Windows Terminal等)のフォント設定を確認する。WSL2内ではなくホストOS側のフォントが使用される。
関連するトラブル
準備中
解決しない場合
- neo-tree公式ドキュメント: https://github.com/nvim-neo-tree/neo-tree.nvim
- nvim-web-devicons: https://github.com/nvim-tree/nvim-web-devicons
- Nerd Fonts公式: https://www.nerdfonts.com/
:messagesでエラーログを確認- 次に調べるキーワード: 「Neovim devicons not working」「terminal nerd fonts setup」