
Linux ユーザーならこんな経験はないでしょうか:特定のタスクをこなすコマンドがあるのは知っているのに、肝心のパラメータがどうしても思い出せない。あるいは複雑な ffmpeg や kubectl コマンドを使うたびに、ブラウザを開いて構文を検索せざるを得ない。
そんな悩みを一気に解決してくれるのが、navi — インタラクティブなコマンドラインチートシートツールです。
navi とは?
navi は Rust で書かれたインタラクティブなチートシートツールで、ターミナル内でコマンド例を直接ブラウズ・実行できます。作業中のターミナルを離れる必要はありません。
主な機能
- 🚀 インタラクティブ検索:あいまい検索(fuzzy search)で必要なコマンドを瞬時に特定
- 📝 変数置換:コマンド内のパラメータを動的に入力、手動編集が不要
- 🎨 高度にカスタマイズ可能:カラー、フォント、レイアウトを自由に設定
- 📦 コミュニティ駆動:主要ツールのチートシートを内蔵、コミュニティリソースのインポートも可能
- 🔌 Shell 統合:Bash、Zsh、Fish など主要シェルに対応
tldr ではなく navi を選ぶ理由
tldr もよく知られたコマンドラインチートシートツールです。では navi にはどんなメリットがあるのでしょうか?
| 機能 | tldr | navi |
|---|---|---|
| インタラクション方式 | 静的表示 | インタラクティブ選択 |
| 変数置換 | ❌ 非対応 | ✅ 動的入力に対応 |
| カスタムチートシート | 制限あり | 完全カスタマイズ可能 |
| コマンド実行 | 手動コピペ | 直接実行可能 |
| 検索体験 | 基本 | あいまい検索 |
一言で言うと:tldr はコマンド構文を素早く確認するのに向き、navi は実際にコマンドを実行するのに向いています。
navi のインストール
方法1:パッケージマネージャー(推奨)
Fedora/RHEL/CentOS:
sudo dnf install navi
Ubuntu/Debian(リポジトリ追加が必要):
sudo add-apt-repository universe
sudo apt update
sudo apt install navi
Arch Linux:
sudo pacman -S navi
macOS(Homebrew):
brew install navi
方法2:Cargo(Rust パッケージマネージャー)
Rust がインストール済みなら:
cargo install navi
方法3:バイナリファイルをダウンロード
GitHub Releases からプリコンパイル済みバイナリをダウンロード:
# 最新バージョンをダウンロード(例:v2.23.0)
wget https://github.com/denisidoro/navi/releases/download/v2.23.0/navi-v2.23.0-x86_64-unknown-linux-musl.tar.gz
# 解凍
tar -xzf navi-v2.23.0-x86_64-unknown-linux-musl.tar.gz
# システムパスに移動
sudo mv navi /usr/local/bin/
Shell 統合の設定
インストール完了後、シェルの設定ファイルに統合コードを追加する必要があります。
Bash
~/.bashrc を編集して追加:
eval "$(navi widget bash)"
Zsh
~/.zshrc を編集して追加:
eval "$(navi widget zsh)"
Fish
~/.config/fish/config.fish を編集して追加:
navi widget fish | source
設定完了後、シェル設定をリロード:
source ~/.bashrc # または ~/.zshrc
基本的な使い方
1. コマンドを検索
一番シンプルな使い方はそのまま検索:
navi
インタラクティブな画面が開き、キーワードでコマンドを検索できます。例えば git と入力すると、Git 関連のチートシートがすべて表示されます。
2. ウィジェットを使う(推奨)
Shell 統合を設定しておけば、ショートカットキーで navi を呼び出せます:
- Bash/Zsh:
Ctrl + G - Fish:
Ctrl + G
ショートカットを押すと検索画面が表示され、コマンドを選択するとそのままコマンドラインに挿入されます。
3. 特定ツールのチートシートを表示
navi --query git
navi --query docker
navi --query kubectl
4. コマンドを実行
navi の画面でコマンドを選択したら:
Enter:コマンドをシェルに挿入Ctrl + Y:コマンドを直接実行Esc:キャンセル
カスタムチートシート
navi の真価は完全カスタマイズ可能なチートシートにあります。
個人用チートシートの作成
~/.config/navi/ ディレクトリに .cheat ファイルを作成:
mkdir -p ~/.config/navi
vim ~/.config/navi/my_tools.cheat
チートシートのフォーマット
# タイトル
% git 定番コマンド
# コマンドの説明
$ 現在のブランチ状態を確認
git status
# 変数付きコマンド
$ 指定ブランチに切り替え
git checkout <branch>
# 注釈付き変数
$ 新ブランチを作成して切り替え
git checkout -b <branch>
%% branch: 新ブランチ名
# 複数変数
$ コードをコミット
git commit -m "<message>"
%% message: コミットメッセージ
# デフォルト値付き変数
$ ブランチをプッシュ
git push <remote> <branch>
%% remote: デフォルト origin
%% branch: 現在のブランチ名
変数の種類
navi はさまざまな変数タイプをサポート:
# テキスト入力
%% name: 名前を入力してください
# デフォルト値付き
%% port: デフォルト 8080
# 選択肢リスト
%% method: デフォルト GET, 選択可 GET POST PUT DELETE
# コマンド出力をオプションとして使用
%% branch: コマンド git branch --format='%(refname:short)', バッククォートで囲む
実用例:Docker チートシート
% Docker よく使う操作
$ 実行中のコンテナを表示
docker ps
$ すべてのコンテナを表示(停止中を含む)
docker ps -a
$ コンテナを起動
docker start <container>
%% container: コマンド docker ps -a --format '{{.Names}}'
$ コンテナを停止
docker stop <container>
%% container: コマンド docker ps --format '{{.Names}}'
$ コンテナを削除
docker rm <container>
%% container: コマンド docker ps -a --format '{{.Names}}'
$ コンテナログを表示
docker logs -f <container>
%% container: コマンド docker ps --format '{{.Names}}'
$ コンテナに入る
docker exec -it <container> <shell>
%% container: コマンド docker ps --format '{{.Names}}'
%% shell: デフォルト /bin/bash, 選択可 /bin/bash /bin/sh
コミュニティチートシートのインポート
navi コミュニティでは主要ツールのチートシートが多数メンテナンスされており、直接インポートできます。
navi の組み込み機能を使用
# 利用可能なチートシートリポジトリを閲覧
navi repo add denisidoro/navi
# または手動で追加
navi repo add https://github.com/denisidoro/cheats
おすすめのチートシートリポジトリ
- denisidoro/cheats — 公式メンテナンスの汎用チートシート
- sv222/kubectl-autocompletion-navi — Kubernetes kubectl コマンド
- ormico/navi-cheatsheets — 各種開発ツールチートシート
上級テクニック
1. タグでコマンドを整理
% システム管理
tags: system
$ ディスク使用状況を確認
df -h
$ メモリ使用状況を確認
free -h
% Git 操作
tags: git, version-control
$ コミット履歴を表示
git log --oneline
2. 条件付き変数
$ 環境に応じてデプロイ
deploy <environment>
%% environment: 選択可 dev staging production
%% environment = production の場合: echo "⚠️ 本番環境へのデプロイです。確認してください!"
3. 外部スクリプトを呼び出す
$ データベースをバックアップ
./scripts/backup.sh <database>
%% database: コマンド mysql -e "SHOW DATABASES;" | tail -n +2
4. カラーテーマをカスタマイズ
~/.config/navi/config.yaml を編集:
style:
tag:
color: blue
width: 20
comment:
color: yellow
snippet:
color: green
実際の使用シーン
シーン1:複雑なコマンドを素早く実行
Docker リソースの定期的なクリーンアップが必要?チートシートを作りましょう:
% Docker クリーンアップ
$ 停止中の全コンテナを削除
docker container prune -f
$ 未使用のイメージを削除
docker image prune -f
$ 未使用のリソースをすべて削除
docker system prune -f
これからは Ctrl + G で「docker クリーンアップ」を検索、ワンクリックで実行できます。
シーン2:チームの標準化
チームのよく使う操作をチートシートにして共有リポジトリに置く:
# チームリポジトリ
git clone https://github.com/your-team/team-navi-cheats.git ~/.config/navi/team
# config.yaml に追加
paths:
- ~/.config/navi/team
新メンバーが加わったら、標準化された操作マニュアルがすぐに手に入ります。
シーン3:新しいツールの学習
Kubernetes を学ぶ際に kubectl チートシートをインポート:
navi repo add https://github.com/sv222/kubectl-autocompletion-navi
学びながら使い、すぐに実践できます。
よくある質問
Q: navi と fish shell の autospawn が衝突する場合は?
A: fish の設定で読み込み順序を調整し、navi ウィジェットを最後に読み込むようにしてください。
Q: カスタムチートシートのバックアップ方法は?
A: ~/.config/navi/ ディレクトリをバージョン管理に入れましょう:
cd ~/.config/navi
git init
git add .
git commit -m "Initial navi cheatsheets"
# プライベートリポジトリにプッシュ
Q: 日本語が文字化けする?
A: ターミナルとフォントが日本語に対応しているか確認し、config.yaml で設定してください:
terminal:
font: "Noto Sans Mono CJK SC"
まとめ
navi はコマンドラインの作業効率を劇的に向上させてくれるツールで、特に以下の方にオススメです:
- ✅ 複雑なコマンドを頻繁に使う開発者
- ✅ 複数のツールを行き来するマルチタスクワーカー
- ✅ チームの操作を標準化したいテックリード
- ✅ 新しいツールを学んでいる初学者
プロジェクト情報: - GitHub: https://github.com/denisidoro/navi - 言語:Rust - Stars: 16,400+ - ライセンス:Apache-2.0
navi の設定に30分かけるだけで、今後毎日コマンド検索に費やす10分を節約できます。この投資、間違いなく価値ありです!
関連記事: - tldr-pages/tldr — 簡略化版 man ページ - cheat.sh — インストール不要のオンラインチートシート - fzf — 汎用あいまい検索ツール、navi との併用に最適