banner
约 1,500 字
5 分钟

cmdp 0.2.6 到 0.2.8:用起来更顺手了

摘要

cmdp 从 0.2.6 更新到 0.2.8,补上了快捷键帮助、文件选择器、状态记忆和发布检查,日常使用比之前省心不少。

cmdp 最近从 0.2.6 更新到了 0.2.8

这两版改动不算特别“花”,但都是实际用的时候很容易碰到的地方。比如忘了快捷键要回去翻 README,路径参数总要手敲,常用命令每次都要重新选一遍,发版前还要担心 release workflow 到线上才报错。这一轮基本就是围绕这些细节继续补。

cmdp 本身的思路还是没变:把常用但又有点长、有点琐碎的命令写成模板,然后在终端 TUI 里选择、填写、预览,最后退出 TUI 回到原终端执行。

主要变化

0.2.60.2.8,比较值得注意的变化有这些:

  • 加了快捷键帮助窗口。

  • 加了浮动文件选择器。

  • 加了上次选择和输入内容的记忆。

  • 加了 Ctrl+d,可以把当前命令恢复到默认值。

  • release 里会额外打包 examples 示例配置。

  • 本地发布检查脚本更完整,可以在打 tag 前先跑一遍。

快捷键终于不用靠记了

TUI 程序一旦快捷键多起来,就很容易出现一个尴尬情况:功能是有了,但用的时候想不起来按什么。

所以这次加了快捷键帮助。现在可以按 F1,或者在普通模式下按 ?,直接在界面里打开帮助窗口。切换区域、移动选择、搜索、编辑参数、打开文件选择器、重置、重载配置、执行命令,这些常用操作都能在里面看到。

这个改动不复杂,但很影响体验。尤其是刚开始用 cmdp,或者隔了一段时间再打开时,不用再专门回 README 里找按键说明。

快捷键提示
快捷键提示

文件选择器:少敲一点路径

这次还加了一个浮动文件选择器。

当光标停在普通输入参数上时,按 f 就可以打开。它会列出当前目录下的文件和目录,可以进入目录、返回上级目录,也可以直接选择当前目录。

这对很多模板都挺有用。比如 find 要填搜索目录,grep 要填文件或路径,tar 要压缩某个目录,less 要打开某个文件,或者用 xorriso 做 ISO、刻盘、校验时,都少不了路径参数。

之前这些地方基本靠手敲,或者从文件管理器复制路径。现在可以在 cmdp 里直接选,整个流程会顺一些。

浮动文件窗口
浮动文件窗口

可以记住上次用到哪了

0.2.8 里还加了状态记忆。这个功能默认不开,需要自己在 ~/.config/cmdp/settings.toml 里打开:

toml
remember_last_selection = true
remember_last_input = true
input_record_limit = 20

打开以后,cmdp 可以记住上次选到哪个分类、哪个命令,以及填过的参数。下次再启动时,就不用每次都从头找。

这类功能适合高频命令。比如经常跑 cargo clippy,经常看某个 systemd 服务日志,或者常用一套 Git、光盘、压缩解压模板,这些命令本身不难,但每次重复选择和填写确实会打断节奏。

敏感参数也做了处理。如果配置里把某个参数标成 secret = true,它不会被写进状态文件。像 token、cookie、密码、密钥这类东西,就应该这样处理。

状态文件会放在这里:

纯文本
${XDG_STATE_HOME:-~/.local/state}/cmdp/state.toml

Ctrl+d:一键回到默认值

有了状态记忆以后,也会出现另一个需求:有时候我不想继续用上次的输入。

所以这次加了 Ctrl+d。它会把当前命令的参数和可选片段恢复到配置里的默认状态,同时清掉这个命令记住的输入。

比如上次填的是一个临时目录、测试文件、一次性的日志路径,下一次再用就不想沿用了。这个时候直接 Ctrl+d 会比一个个删参数舒服很多。

examples 单独打包了

cmdp 很依赖配置。真正开始用的时候,大多数人应该不会先把模板语法从头研究一遍,而是先找几个例子,能跑起来,再慢慢改成自己的。

所以这次 release 流程里加了 examples 打包。发布时会把示例配置单独打成压缩包。这样不克隆整个仓库,也能直接拿到一套参考模板。

现在 examples 里已经有不少常用场景,比如文件查看、搜索、目录大小、压缩解压、Git、Rust、systemd、Flatpak、DNF,还有光盘相关命令。需要哪个就复制哪个到 ~/.config/cmdp/,不用一次全装。

发版前检查更完整

本地发布检查脚本也顺手补了一下。

check-release-local.sh 会检查必要工具,验证 GitHub Actions 的 YAML 文件,然后跑 lockfile、metadata、fmt、clippy、test、release build,最后本地生成 .deb.rpm 和 examples 压缩包。

主要是为了减少一种很烦的情况:本地看起来没问题,tag 推上去以后,release workflow 跑到一半才发现缺工具、配置写错或者包打不出来。

现在正式发版前可以先在本地跑一遍,心里会更有底。

小结

0.2.60.2.8 这轮更新,主要不是加大功能,而是把日常使用里不顺手的地方补上。

快捷键帮助让它更容易上手,文件选择器减少路径输入,状态记忆减少重复填写,Ctrl+d 方便回到默认状态,examples 打包和本地发布检查则让分发、发版更稳一点。

整体来看,cmdp 现在更像一个能长期积累的命令工作台了。不是简单替代 alias,而是把那些常用、复杂、带参数、偶尔还有风险的命令放到一个地方,选一下、填一下、看一眼,再交给原终端执行。

END