navi-interactive-cheatsheet-tool

Linux ユーザーならこんな経験はないでしょうか:特定のタスクをこなすコマンドがあるのは知っているのに、肝心のパラメータがどうしても思い出せない。あるいは複雑な ffmpeg や kubectl コマンドを使うたびに、ブラウザを開いて構文を検索せざるを得ない。

そんな悩みを一気に解決してくれるのが、navi — インタラクティブなコマンドラインチートシートツールです。

navi は Rust で書かれたインタラクティブなチートシートツールで、ターミナル内でコマンド例を直接ブラウズ・実行できます。作業中のターミナルを離れる必要はありません。

主な機能

  • 🚀 インタラクティブ検索:あいまい検索(fuzzy search)で必要なコマンドを瞬時に特定
  • 📝 変数置換:コマンド内のパラメータを動的に入力、手動編集が不要
  • 🎨 高度にカスタマイズ可能:カラー、フォント、レイアウトを自由に設定
  • 📦 コミュニティ駆動:主要ツールのチートシートを内蔵、コミュニティリソースのインポートも可能
  • 🔌 Shell 統合:Bash、Zsh、Fish など主要シェルに対応

tldr ではなく navi を選ぶ理由

tldr もよく知られたコマンドラインチートシートツールです。では navi にはどんなメリットがあるのでしょうか?

機能 tldr navi
インタラクション方式 静的表示 インタラクティブ選択
変数置換 ❌ 非対応 ✅ 動的入力に対応
カスタムチートシート 制限あり 完全カスタマイズ可能
コマンド実行 手動コピペ 直接実行可能
検索体験 基本 あいまい検索

一言で言うと:tldr はコマンド構文を素早く確認するのに向き、navi は実際にコマンドを実行するのに向いています。

方法1:パッケージマネージャー(推奨)

Fedora/RHEL/CentOS:

BASH
sudo dnf install navi

Ubuntu/Debian(リポジトリ追加が必要):

BASH
sudo add-apt-repository universe
sudo apt update
sudo apt install navi

Arch Linux:

BASH
sudo pacman -S navi

macOS(Homebrew):

BASH
brew install navi

方法2:Cargo(Rust パッケージマネージャー)

Rust がインストール済みなら:

BASH
cargo install navi

方法3:バイナリファイルをダウンロード

GitHub Releases からプリコンパイル済みバイナリをダウンロード:

BASH
# 最新バージョンをダウンロード(例: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 を編集して追加:

BASH
eval "$(navi widget bash)"

Zsh

~/.zshrc を編集して追加:

BASH
eval "$(navi widget zsh)"

Fish

~/.config/fish/config.fish を編集して追加:

FISH
navi widget fish | source

設定完了後、シェル設定をリロード:

BASH
source ~/.bashrc  # または ~/.zshrc

基本的な使い方

1. コマンドを検索

一番シンプルな使い方はそのまま検索:

BASH
navi

インタラクティブな画面が開き、キーワードでコマンドを検索できます。例えば git と入力すると、Git 関連のチートシートがすべて表示されます。

2. ウィジェットを使う(推奨)

Shell 統合を設定しておけば、ショートカットキーで navi を呼び出せます:

  • Bash/Zsh:Ctrl + G
  • Fish:Ctrl + G

ショートカットを押すと検索画面が表示され、コマンドを選択するとそのままコマンドラインに挿入されます。

3. 特定ツールのチートシートを表示

BASH
navi --query git
navi --query docker
navi --query kubectl

4. コマンドを実行

navi の画面でコマンドを選択したら:

  • Enter:コマンドをシェルに挿入
  • Ctrl + Y:コマンドを直接実行
  • Esc:キャンセル

カスタムチートシート

navi の真価は完全カスタマイズ可能なチートシートにあります。

個人用チートシートの作成

~/.config/navi/ ディレクトリに .cheat ファイルを作成:

BASH
mkdir -p ~/.config/navi
vim ~/.config/navi/my_tools.cheat

チートシートのフォーマット

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 はさまざまな変数タイプをサポート:

CHEAT
# テキスト入力
%% name: 名前を入力してください

# デフォルト値付き
%% port: デフォルト 8080

# 選択肢リスト
%% method: デフォルト GET, 選択可 GET POST PUT DELETE

# コマンド出力をオプションとして使用
%% branch: コマンド git branch --format='%(refname:short)', バッククォートで囲む

実用例:Docker チートシート

CHEAT
% 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 コミュニティでは主要ツールのチートシートが多数メンテナンスされており、直接インポートできます。

BASH
# 利用可能なチートシートリポジトリを閲覧
navi repo add denisidoro/navi

# または手動で追加
navi repo add https://github.com/denisidoro/cheats

おすすめのチートシートリポジトリ

上級テクニック

1. タグでコマンドを整理

CHEAT
% システム管理
tags: system

$ ディスク使用状況を確認
df -h

$ メモリ使用状況を確認
free -h

% Git 操作
tags: git, version-control

$ コミット履歴を表示
git log --oneline

2. 条件付き変数

CHEAT
$ 環境に応じてデプロイ
deploy <environment>
%% environment: 選択可 dev staging production
%% environment = production の場合: echo "⚠️  本番環境へのデプロイです。確認してください!"

3. 外部スクリプトを呼び出す

CHEAT
$ データベースをバックアップ
./scripts/backup.sh <database>
%% database: コマンド mysql -e "SHOW DATABASES;" | tail -n +2

4. カラーテーマをカスタマイズ

~/.config/navi/config.yaml を編集:

YAML
style:
  tag:
    color: blue
    width: 20
  comment:
    color: yellow
  snippet:
    color: green

実際の使用シーン

シーン1:複雑なコマンドを素早く実行

Docker リソースの定期的なクリーンアップが必要?チートシートを作りましょう:

CHEAT
% Docker クリーンアップ

$ 停止中の全コンテナを削除
docker container prune -f

$ 未使用のイメージを削除
docker image prune -f

$ 未使用のリソースをすべて削除
docker system prune -f

これからは Ctrl + G で「docker クリーンアップ」を検索、ワンクリックで実行できます。

シーン2:チームの標準化

チームのよく使う操作をチートシートにして共有リポジトリに置く:

BASH
# チームリポジトリ
git clone https://github.com/your-team/team-navi-cheats.git ~/.config/navi/team

# config.yaml に追加
paths:
  - ~/.config/navi/team

新メンバーが加わったら、標準化された操作マニュアルがすぐに手に入ります。

シーン3:新しいツールの学習

Kubernetes を学ぶ際に kubectl チートシートをインポート:

BASH
navi repo add https://github.com/sv222/kubectl-autocompletion-navi

学びながら使い、すぐに実践できます。

よくある質問

Q: navi と fish shell の autospawn が衝突する場合は?

A: fish の設定で読み込み順序を調整し、navi ウィジェットを最後に読み込むようにしてください。

Q: カスタムチートシートのバックアップ方法は?

A: ~/.config/navi/ ディレクトリをバージョン管理に入れましょう:

BASH
cd ~/.config/navi
git init
git add .
git commit -m "Initial navi cheatsheets"
# プライベートリポジトリにプッシュ

Q: 日本語が文字化けする?

A: ターミナルとフォントが日本語に対応しているか確認し、config.yaml で設定してください:

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 との併用に最適