Post

yaziのインストールと設定(macOS)

yaziとは

Rust製の高速ターミナルファイルマネージャ。VS Codeのサイドバーのようにファイルをブラウズし、プレビューしながら操作できる。

インストール

brew install yazi

Nerd Font(アイコン表示に必要)

brew install --cask font-hack-nerd-font

インストール後、ターミナルのフォント設定を「Hack Nerd Font」に変更する。

  • iTerm2: Settings → Profiles → Text → Font → Hack Nerd Font

基本操作

キー 操作
j/k 上下移動
l フォルダ展開 / ファイルを開く
h 親ディレクトリに戻る
/ 検索
q 終了

設定ファイル

設定は ~/.config/yazi/ に配置する。

yazi.toml - レイアウト設定

左の親ディレクトリパネルを非表示にして、ファイル一覧+プレビューの2カラムにする:

[mgr] ratio = [0, 1, 1]

ratio はデフォルトで [1, 4, 3](親:一覧:プレビュー)。左を 0 にすると非表示。

keymap.toml - キーバインド

# Ctrl+OでFinderで表示 [[mgr.prepend_keymap]] on = "<C-o>" run = "shell -- open -R %h" desc = "Finderで表示" # Ctrl+Yでファイルパスをクリップボードにコピー [[mgr.prepend_keymap]] on = "<C-y>" run = "shell -- printf '%s' %h | pbcopy" desc = "パスをコピー" # Escで終了 [[mgr.prepend_keymap]] on = "<Esc>" run = "quit" desc = "終了"

シェルコマンド内のファイル参照は %h(ホバー中のファイルパス)を使う。

注意: echo -n を使うと -n がリテラルとして出力される環境がある。printf '%s' を使うこと。

theme.toml - テーマ設定

ダーク背景のターミナルで文字が見づらい場合はテーマを設定する。Catppuccin Mochaベースの例:

[manager] cwd = { fg = "#89b4fa", bold = true } hovered = { reversed = true } [filetype] rules = [ { name = "*/", fg = "#89b4fa", bold = true }, { name = "*", fg = "#cdd6f4" }, ]

プレビューのシンタックスハイライト

プレビューペインの色は theme.toml[mgr] セクションで .tmTheme ファイルを指定する。yazi.toml[preview] セクションではない点に注意。

# tmThemeファイルをダウンロード curl -sL "https://raw.githubusercontent.com/catppuccin/bat/main/themes/Catppuccin%20Mocha.tmTheme" \ -o ~/.config/yazi/Catppuccin-Mocha.tmTheme
# theme.toml [mgr] syntect_theme = "~/.config/yazi/Catppuccin-Mocha.tmTheme"

よくあるハマりポイント:

  • yazi.toml[preview] に書いても効かない
  • テーマ名("Catppuccin Mocha" 等)を直接指定しても効かない。.tmTheme ファイルのパスが必要
  • flavorを使っている場合はflavorの tmtheme.xml が優先され、この設定は無視される

制限事項

  • yaziはファイルマネージャであり、エディタ機能はない。ファイルを開くと $EDITOR(vim等)が起動する
  • 独自の折りたたみロジック(特定条件でディレクトリを1行にまとめる等)は実装できない。そのような機能が必要な場合は専用ツールと併用する
  • ファイルソートの制御に限界がある: sort_dir_first = true でディレクトリを先頭に、sort_dir_first = false でファイルとディレクトリを混在にはできるが、「ファイルを先、ディレクトリを後」にするオプションは存在しない。sort_reverse = true との組み合わせも意図通りに動かない場合がある
This post is licensed under CC BY 4.0 by the author.