はじめに

長らく仕事でPCを使用していると、膨大な数のディレクトリやファイルを管理しないといけなくなる。エイリアスやショートカットを駆使しても徐々に煩雑さは増していく。しかし、ターミナル上で動作するYaziを使えば、非常に軽快にPC内を移動し、素早く目的のファイルまでたどり着くことができる。本稿ではそんな神ツールYaziを紹介する。

Yaziとは

Yaziとは、ターミナル上で動作するファイルマネージャーである。簡単に言うと、Macで言うところのFinder、Windowsでいうところのエクスプローラーである。ちなみに中国語でアヒルを意味するらしい。


↑Yaziの画面例

  • プレビュー画像を表示できる
  • 通常エンジニアが使うような高機能な検索が使える
  • キーボードで様々な操作ができる(ファイル作成、コマンド、コピペなど)

と言う点で非常に優秀だ。キーボード操作はすぐに慣れる。:でコマンドを打つことができるので、:open .でFinderで開いたり、:code .でVSCodeで開いたり、様々な動きができて柔軟性が確保されている。

更にMacの場合、デフォルトのFinderには.DS_Storeという隠しファイルが量産されたり、NFD問題と呼ばれるファイル名の問題があったりするので、それを回避できるメリットが大きい(本記事では触れないので興味があれば調べるべし)。

特に便利な機能:Zoxide

Zで起動できる。最近訪れたディレクトリから検索して移動できる。95%くらいの率でこれで事足りる。

Yaziのセットアップ

私の環境はMacであるので、Macのセットアップの手順を記載する(Homebrew使用)。Windowsでも大筋は同じと思われる。

インストール

下記コマンドでYaziと他の依存関係をまとめてインストールする。

brew install yazi ffmpeg sevenzip jq poppler fd ripgrep fzf zoxide resvg imagemagick

Yaziは単独でも使用可能だが、プレビュー機能や検索機能は他のCLIツールに依存する。逆に言うと、CLIに不慣れでも強力なCLIツールの恩恵を受けることができるということでもある。

ツール名Yaziでの主な機能
ffmpeg動画・音声ファイルのプレビュー
sevenzip7z形式のファイル圧縮・解凍・プレビュー
jqJSONファイルのプレビュー
popplerPDFファイルのプレビュー
fdファイル検索機能の強化
ripgrepファイル内容の高速検索
fzf高速なファイル・ディレクトリジャンプ、履歴検索
zoxide頻繁にアクセスするディレクトリへの高速移動(fzfが必要)
resvgSVGファイルのプレビュー
imagemagick各種画像フォーマットのプレビュー (特に大きい・複雑なもの)

不要なものは入れなくても構わないが、とりあえず全部入れておいて損はない。

Ghosttyを使用する

さらに、nerd-fontsというフォント&アイコンパッチの使用が推奨されている。インストールしてターミナルに設定をするときれいなアイコンが表示される。しかし、Mac/Linuxユーザーであればターミナルの代わりにGhosttyを使用すればデフォルトでnerd-fontsに対応しているので、特に設定は不要である。


↑デフォルトのターミナル(左)とGhostty(右)の比較
Starshipというシェルプロンプトを併用している

起動時の設定

ターミナルで下記を実行すると起動できる。

yazi

ただし、シェルの設定にシェルラッパーを設定することで、yだけで起動できてかつYaziを終了した際にその位置にターミナルのディレクトリを移動することができる。Zshの場合は.zshrcに下記の様にシェルラッパーを定義する。

function y() {
	local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
	yazi "$@" --cwd-file="$tmp"
	IFS= read -r -d '' cwd < "$tmp"
	[ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd"
	rm -f -- "$tmp"
}

この方法は公式が推奨している。詳細はQuick Start | Yaziを参照。

その他の設定

tiffのプレビューをする

私は職業上tiffファイルを使用しないといけないことがある。tiffファイルのプレビューを有効化しようと思うと.config/yazi/yazi.tomlに下記のように記載する必要がある(imagemagickが必要)。

[plugin]
prepend_previewers = [
	{ mime = "image/tiff", run = "magick" },
]

参考

デフォルトのエディターをmicroに変更する

Yaziの中ではVimというエディターを使用してその場でテキストファイルを作成したり編集することができる。これも非常に便利な機能の1つである。ただVimは若干エンジニア向けなので、直感的操作ができるターミナルエディターのmicroをインストールして使用できるようにしてみる。

インストール

brew install micro

.config/yazi/yazi.tomlに下記の様に追記する。

[opener]
edit = [
        { run = 'micro "$@"', block = true, for = "unix" },
]

プラグイン

Yazi用のプラグインが色々あるようだ。今後必要であれば追加していこう。

おわりに

Yaziは高いカスタマイズ性を持ちながらもそのままの設定でも便利に使用できる。Zoxideによる高速移動、強力な検索機能、そして豊富なプレビュー機能により、日々のファイル操作が劇的に改善される。これを機にFinderからは卒業し、キーボード中心の快適なファイル管理を行っていこう。