用 navi 把「偶尔用一次但总记不住」的 CLI 命令,变成你肌肉记忆的一部分

用 navi 把「偶尔用一次但总记不住」的 CLI 命令,变成你肌肉记忆的一部分


你一定有过这种经历:半年前用过一次 ffmpeg 剪切视频,今天想再跑一遍,命令flag全忘了。打开浏览器搜、复制粘贴、回来改参数——前后花了三分钟。

navi 想解决的就是这件事:让你在终端里用模糊搜索找到那条命令,直接执行,连复制粘贴都省了。

它是什么

navi(https://github.com/denisidoro/navi)是一个 Rust 写的交互式命令行速查工具,17,671 颗星,Apache 2.0 许可。它的核心逻辑很简单:

  1. 你有一个 .cheat 文件库(自己写,或从社区拉)
  2. 你在终端输入 navi,弹出一个 fzf 风格的模糊搜索框
  3. 输入关键词,比如 git checkout,所有相关条目列出来
  4. 选一个,它帮你把命令填进提示行,你确认后直接执行

语法长这样:

% git, code

# Change branch
git checkout <branch>

$ branch: git branch | awk '{print $NF}'

注意那个 $ branch: 行——navi 会先执行这段脚本,把结果作为可选参数动态展示。你不需要记分支名,它帮你查好。

怎么用

最基础的用法就是直接敲 navi。但它的用法远不止这一种:

Shell Widget(Ctrl-R 风格):装好后 eval "$(navi widget bash)",然后在 bash 里按 Ctrl-R,直接用 navi 搜索替代历史记录。好处是 shell history 里记录的是你真正跑的命令,而不是 navi 这个调用。

Tmux Widget:在任何远程 SSH 会话里都能用,适合团队共用服务器的场景。

Shell Scripting:把 navi 集成进自己的脚本里,做成交互式参数填充界面。

导入其他格式:tldr、cheat.sh 的内容可以直接导进来用,不用从头写。

安装只要一行:

brew install navi

也支持 Gentoo、Nix、Cargo 等方式,详见 https://github.com/denisidoro/navi。

适合谁 / 不适合谁

适合:

  • 经常在终端里操作但记不住所有 flag 的开发者
  • 需要在多台机器上保持一致命令习惯的 DevOps/SRE
  • 团队需要共享”这条命令是我们处理某类问题的标准方式”的场景

不适合:

  • 纯 GUI 用户,几乎不用终端——navi 对你没有意义
  • 想要图形界面的速查工具——navi 是纯 TUI,没有 Web/桌面版
  • 期待它能自动推荐”今天该学什么”——它只响应你的搜索,不做主动推荐

和同类比怎么样

如果你用过 tldr、cheat.sh,会发现 navi 的定位不太一样:

tldr cheat.sh navi
交互方式 查 → 展示 查 → 展示 搜索 → 选择 → 直接执行
参数填充 无 无 有(动态执行子查询)
自定义 只能贡献上游 只读 完全自己写
执行命令 手动复制 手动复制 直接执行
维护者活跃度 活跃 活跃 活跃(v2.24.0 于 2023年1月)

核心差异在于 navi 真正把”查”和”执行”打通了。你不需要先查出来、再关掉浏览器、再去终端粘贴——它直接把你选中的命令放到提示行,你Enter就执行。

安全上需要注意什么

一个会帮你执行命令的工具,自然绕不开安全问题。有一篇专门的安全review(https://mrkeyoor.com/repos/navi)值得一读。简单说:

  • navi 默认只调用 Homebrew 和 Git 安装内容,不会有隐蔽的网络请求
  • 它不追踪你输入的内容
  • 但如果你从第三方仓库导入 cheatsheet,那些文件本质上是可以包含任意 shell 脚本的——只导入你信任的来源

建议把常用的 .cheat 文件放进 Git 仓库,做代码审查。

社区在怎么用

X-CMD 做了一个 navi 的中文安装指南(https://www.x-cmd.com/install/navi),把 navi 集成进了他们的命令行工具生态。

DEV Community 有一篇 2026年8月发的入门帖(https://dev.to/githubopensource/forget-cli-headaches-discover-navi-your-interactive-command-line-cheatsheet-549i),角度是”给 CLI 新手的效率工具”。

有个博主分享了自己如何用 navi 管理 git、docker、kubectl 三套 cheatsheet,配合 shell widget 做到”命令不用背,搜索即执行”的工作流(https://writeloop.dev/posts/how-i-use-navi-for-cli-cheatsheets/)。

值得注意的边界

下一步建议

如果这个场景戳中你了,有三条路可以选:

最快上手:装好 navi,用内置的 navi repo add 拉一个你常用的工具库(比如 git、docker),感受一下从”查手册”到”直接执行”的体验差异。

团队落地:把团队里常用的命令写成 .cheat 文件,放进一个私有的 Git 仓库,用 navi import 导入。让新人 onboarding 的成本从”问 senior 这个咋跑”变成”navi 搜索一下”。

深度定制:研究一下 navi 的 $ variable 语法和 shell widget 集成,把 navi 做成你日常 shell 的默认命令补全层——不是 IDE 给的那种,而是你真正在本地跑过、验证过的那些 one-liner。


项目地址:https://github.com/denisidoro/navi

你用 navi 解决过什么问题?欢迎评论分享你的 cheatsheet 库结构。

评论区

0 条评论

登录后可评论。

拾光·开源拾遗 2247 阅读