跳转至

navi 交互式命令行速查工具:告别记不住命令的尴尬

作为一名 Linux 用户,你是否经常遇到这种情况:明明知道某个命令能完成任务,却死活想不起具体的参数?或者面对复杂的 ffmpegkubectl命令时,不得不打开浏览器搜索语法?

今天介绍一款能彻底解决这个问题的神器——navi,一个交互式的命令行速查工具。

navi-interactive-cheatsheet-tool

navi 是一个用 Rust 编写的交互式 cheatsheet 工具,它允许你在终端中直接浏览和执行命令示例,而无需离开当前工作环境。

核心特性

  • 🚀 交互式搜索:支持 fuzzy search,快速找到需要的命令
  • 📝 变量替换:命令中的参数可以动态输入,避免手动编辑
  • 🎨 高度可定制:支持自定义颜色、字体和布局
  • 📦 社区驱动:内置常用工具的 cheatsheet,也支持导入社区资源
  • 🔌 Shell 集成:支持 Bash、Zsh、Fish 等主流 Shell

你可能听说过 tldr,它也是一个流行的命令行速查工具。那么 navi 有什么优势呢?

特性 tldr navi
交互方式 静态展示 交互式选择
变量替换 ❌ 不支持 ✅ 支持动态输入
自定义 cheatsheet 有限 完全自定义
命令执行 手动复制粘贴 可直接执行
搜索体验 基础 Fuzzy search

简单来说:tldr 适合快速查看命令语法,navi 适合实际执行命令

方法一:使用包管理器(推荐)

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

方法二:使用 Cargo(Rust 包管理器)

如果你已经安装了 Rust:

cargo install navi

方法三:下载二进制文件

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 集成

安装完成后,需要在 Shell 配置文件中添加集成代码。

Bash

编辑 ~/.bashrc,添加:

eval "$(navi widget bash)"

Zsh

编辑 ~/.zshrc,添加:

eval "$(navi widget zsh)"

Fish

编辑 ~/.config/fish/config.fish,添加:

navi widget fish | source

配置完成后,重新加载 Shell 配置:

source ~/.bashrc  # 或 ~/.zshrc

基本使用

1. 搜索命令

最简单的用法是直接搜索:

navi

这会打开一个交互式界面,你可以输入关键词搜索命令。例如输入 git,会显示所有 Git 相关的 cheatsheet。

2. 使用 Widget(推荐)

配置好 Shell 集成后,可以使用快捷键调用 navi:

  • Bash/ZshCtrl + G
  • FishCtrl + G

按下快捷键后,会弹出搜索界面,选择命令后可以直接填充到命令行。

3. 查看特定工具的 cheatsheet

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

4. 执行命令

在 navi 界面中选择命令后,可以:

  • Enter:将命令填充到 Shell
  • Ctrl + Y:直接执行命令
  • Esc:取消

自定义 Cheatsheet

navi 的强大之处在于支持完全自定义的 cheatsheet。

创建个人 cheatsheet

~/.config/navi/ 目录下创建 .cheat 文件:

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

Cheatsheet 格式

# 标题
% 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 cheatsheet

% 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

导入社区 Cheatsheet

navi 社区维护了大量常用工具的 cheatsheet,可以直接导入。

# 浏览可用的 cheatsheet 仓库
navi repo add denisidoro/navi

# 或者手动添加
navi repo add https://github.com/denisidoro/cheats

推荐的 Cheatsheet 仓库

高级技巧

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

实际应用场景

场景一:快速执行复杂命令

需要定期清理 Docker 资源?创建一个 cheatsheet:

% Docker 清理

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

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

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

以后只需 Ctrl + G,搜索 "docker 清理",一键执行。

场景二:团队协作标准化

将团队的常用操作写成 cheatsheet,放在共享仓库:

# 团队仓库
git clone https://github.com/your-team/team-navi-cheats.git ~/.config/navi/team

# 在 config.yaml 中添加
paths:
  - ~/.config/navi/team

新成员加入后,立即拥有标准化的操作手册。

场景三:学习新工具

学习 Kubernetes 时,导入 kubectl cheatsheet:

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

边学边用,快速上手。

常见问题

Q: navi 和 fish shell 的 autospawn 冲突怎么办?

A: 在 fish 配置中调整加载顺序,确保 navi widget 最后加载。

Q: 如何备份我的自定义 cheatsheet?

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 是一款能显著提升命令行效率的工具,特别适合:

  • ✅ 经常使用复杂命令的开发者
  • ✅ 需要快速切换不同工具上下文的多面手
  • ✅ 希望标准化团队操作的 Tech Lead
  • ✅ 正在学习新工具的初学者

项目信息: - GitHub: https://github.com/denisidoro/navi - 语言:Rust - Stars: 16,400+ - 许可证:Apache-2.0

花 30 分钟配置 navi,未来每天节省 10 分钟搜索命令的时间。这笔投资,值得!


相关阅读: - tldr-pages/tldr - 简化版 man pages - cheat.sh - 无需安装的在线 cheatsheet - fzf - 通用 fuzzy finder,可与 navi 配合使用