navi-interactive-cheatsheet-tool

En tant qu'utilisateur Linux, cela vous est sûrement déjà arrivé : vous savez qu'une commande peut faire le travail, mais impossible de vous souvenir des paramètres exacts. Ou face à une commande complexe comme ffmpeg ou kubectl, vous êtes obligé d'ouvrir le navigateur pour vérifier la syntaxe ?

Aujourd'hui, je vous présente l'outil qui résout ce problème une bonne fois pour toutes — navi, un cheatsheet interactif pour le terminal.

Qu'est-ce que navi ?

navi est un outil de cheatsheet interactif écrit en Rust. Il vous permet de parcourir et exécuter directement des exemples de commandes dans le terminal, sans jamais quitter votre environnement de travail.

Fonctionnalités clés

  • 🚀 Recherche interactive : prise en charge de la recherche floue (fuzzy search) pour trouver rapidement la commande souhaitée
  • 📝 Remplacement de variables : les paramètres des commandes peuvent être saisis dynamiquement, fini l'édition manuelle
  • 🎨 Hautement personnalisable : couleurs, polices et mise en page, tout est configurable
  • 📦 Piloté par la communauté : des cheatsheets pour les outils courants sont intégrées, et vous pouvez aussi importer des ressources communautaires
  • 🔌 Intégration Shell : compatible avec Bash, Zsh, Fish et les autres shells populaires

Pourquoi choisir navi plutôt que tldr ?

Vous connaissez peut-être tldr, un autre outil populaire de cheatsheet en ligne de commande. Alors, qu'est-ce que navi apporte de plus ?

Fonctionnalité tldr navi
Mode d'interaction Affichage statique Sélection interactive
Remplacement de variables ❌ Non pris en charge ✅ Saisie dynamique
Cheatsheets personnalisées Limitées Totalement personnalisables
Exécution de commandes Copier-coller manuel Exécution directe possible
Expérience de recherche Basique Fuzzy search

En résumé : tldr est idéal pour consulter rapidement la syntaxe d'une commande, navi est fait pour exécuter la commande directement.

Installer navi

Méthode 1 : via le gestionnaire de paquets (recommandé)

Fedora/RHEL/CentOS :

BASH
sudo dnf install navi

Ubuntu/Debian (ajouter le dépôt d'abord) :

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

Méthode 2 : via Cargo (gestionnaire de paquets Rust)

Si Rust est déjà installé :

BASH
cargo install navi

Méthode 3 : télécharger le binaire

Récupérez le binaire précompilé depuis les GitHub Releases :

BASH
# Télécharger la dernière version (v2.23.0 en exemple)
wget https://github.com/denisidoro/navi/releases/download/v2.23.0/navi-v2.23.0-x86_64-unknown-linux-musl.tar.gz

# Extraire
tar -xzf navi-v2.23.0-x86_64-unknown-linux-musl.tar.gz

# Déplacer dans le chemin système
sudo mv navi /usr/local/bin/

Configurer l'intégration Shell

Après l'installation, ajoutez le code d'intégration dans la configuration de votre shell.

Bash

Éditez ~/.bashrc et ajoutez :

BASH
eval "$(navi widget bash)"

Zsh

Éditez ~/.zshrc et ajoutez :

BASH
eval "$(navi widget zsh)"

Fish

Éditez ~/.config/fish/config.fish et ajoutez :

FISH
navi widget fish | source

Une fois configuré, rechargez la configuration du shell :

BASH
source ~/.bashrc  # ou ~/.zshrc

Utilisation de base

1. Chercher une commande

L'utilisation la plus simple consiste à lancer une recherche directe :

BASH
navi

Cela ouvre une interface interactive où vous pouvez taper des mots-clés pour chercher des commandes. Tapez git par exemple, et tous les cheatsheets liés à Git s'afficheront.

2. Utiliser le widget (recommandé)

Après avoir configuré l'intégration Shell, utilisez un raccourci clavier pour appeler navi :

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

Appuyez sur le raccourci, l'interface de recherche apparaît. Sélectionnez une commande et elle sera automatiquement injectée dans votre ligne de commande.

3. Consulter le cheatsheet d'un outil spécifique

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

4. Exécuter une commande

Depuis l'interface navi, une fois la commande sélectionnée :

  • Appuyez sur Entrée : la commande est injectée dans le Shell
  • Appuyez sur Ctrl + Y : la commande est exécutée directement
  • Appuyez sur Échap : annulation

Cheatsheets personnalisées

La vraie force de navi, c'est le support total des cheatsheets personnalisées.

Créer son propre cheatsheet

Créez un fichier .cheat dans le répertoire ~/.config/navi/ :

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

Format du cheatsheet

CHEAT
# Titre
% git 常用命令

# Description de la commande
$ 查看当前分支状态
git status

# Commande avec variable
$ 切换到指定分支
git checkout <branch>

# Variable avec commentaire
$ 创建新分支并切换
git checkout -b <branch>
%% branch: 新分支名称

# Variables multiples
$ 提交代码
git commit -m "<message>"
%% message: 提交信息

# Variable avec valeur par défaut
$ 推送分支
git push <remote> <branch>
%% remote: 默认值 origin
%% branch: 当前分支名

Types de variables

navi prend en charge plusieurs types de variables :

CHEAT
# Saisie de texte
%% name: 请输入名称

# Avec valeur par défaut
%% port: 默认值 8080

# Liste de sélection
%% method: 默认值 GET, 可选值 GET POST PUT DELETE

# Sortie de commande comme option
%% branch: 命令 git branch --format='%(refname:short)', 反引号包裹

Exemple pratique : cheatsheet 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

Importer des cheatsheets communautaires

La communauté navi maintient une vaste collection de cheatsheets pour les outils populaires, importables en un clin d'œil.

Utiliser la fonction intégrée de navi

BASH
# Parcourir les dépôts de cheatsheets disponibles
navi repo add denisidoro/navi

# Ou ajouter manuellement
navi repo add https://github.com/denisidoro/cheats

Dépôts de cheatsheets recommandés

Astuces avancées

1. Organiser les commandes avec des tags

CHEAT
% 系统管理
tags: system

$ 查看磁盘使用
df -h

$ 查看内存使用
free -h

% Git 操作
tags: git, version-control

$ 查看提交历史
git log --oneline

2. Variables conditionnelles

CHEAT
$ 根据环境部署
deploy <environment>
%% environment: 可选值 dev staging production
%% 如果 environment = production: echo "⚠️  生产环境部署,请确认!"

3. Appeler un script externe

CHEAT
$ 备份数据库
./scripts/backup.sh <database>
%% database: 命令 mysql -e "SHOW DATABASES;" | tail -n +2

4. Thème de couleurs personnalisé

Éditez ~/.config/navi/config.yaml :

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

Cas d'utilisation concrets

Scénario 1 : exécuter rapidement des commandes complexes

Besoin de nettoyer régulièrement les ressources Docker ? Créez un cheatsheet dédié :

CHEAT
% Docker 清理

$ 删除所有停止的容器
docker container prune -f

$ 删除未使用的镜像
docker image prune -f

$ 删除所有未使用的资源
docker system prune -f

Désormais, un simple Ctrl + G, cherchez « docker 清理 », et c'est parti.

Scénario 2 : standardisation des opérations en équipe

Rédigez les opérations courantes de votre équipe dans un cheatsheet, stocké dans un dépôt partagé :

BASH
# Dépôt d'équipe
git clone https://github.com/your-team/team-navi-cheats.git ~/.config/navi/team

# Ajouter dans config.yaml
paths:
  - ~/.config/navi/team

Un nouveau membre rejoint l'équipe ? Il dispose immédiatement du manuel d'opérations standardisé.

Scénario 3 : apprendre un nouvel outil

En apprentissage de Kubernetes ? Importez le cheatsheet kubectl :

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

Apprenez tout en utilisant, la prise en main est rapide.

Questions fréquentes

Q : navi entre en conflit avec autospawn de Fish shell, que faire ?

R : Ajustez l'ordre de chargement dans la configuration Fish, en veillant à ce que le widget navi soit chargé en dernier.

Q : Comment sauvegarder mes cheatsheets personnalisées ?

R : Placez le répertoire ~/.config/navi/ sous contrôle de version :

BASH
cd ~/.config/navi
git init
git add .
git commit -m "Initial navi cheatsheets"
# Pousser vers un dépôt privé

Q : Les caractères chinois s'affichent mal ?

R : Assurez-vous que votre terminal et votre police prennent en charge le chinois, ou configurez dans config.yaml :

YAML
terminal:
  font: "Noto Sans Mono CJK SC"

Résumé

navi est un outil qui augmente significativement la productivité en ligne de commande, particulièrement adapté pour :

  • ✅ Les développeurs qui utilisent fréquemment des commandes complexes
  • ✅ Les touche-à-tout qui basculent rapidement entre différents contextes d'outils
  • ✅ Les Tech Leads qui souhaitent standardiser les opérations de leur équipe
  • ✅ Les débutants en apprentissage d'un nouvel outil

Informations sur le projet : - GitHub : https://github.com/denisidoro/navi - Langage : Rust - Stars : 16 400+ - Licence : Apache-2.0

Investissez 30 minutes pour configurer navi, et économisez 10 minutes par jour à chercher des commandes. Le retour sur investissement est indiscutable !


Lectures associées : - tldr-pages/tldr — Pages man simplifiées - cheat.sh — Cheatsheet en ligne, aucune installation nécessaire - fzf — Fuzzy finder universel, peut être utilisé conjointement avec navi