42md 命令补全上线:敲一半按下 Tab,命令、工具、文件自动补齐
老是记不住 `42md tools translate` 后面跟哪些参数?`--target` 还是 `--lang`?文件名又要手敲一长串?v0.7.29 起,42md 在终端支持 Tab 补全:在命令或参数后留一个空格,再按 Tab,子命令、全部内置工具、参数和文件路径自动提示。支持 bash、zsh、fish 三种常用 shell,新装或重装时自动配好,已经装过的也能一行命令开启。纯命令行体验升级,免费,不消耗 AI 配额。
一、总记不住完整命令?交给 Tab
在终端用 42md 久了,常遇到这几件小麻烦:
- 想跑
42md tools translate,结果tools后面到底有哪些工具,得先42md tools list看一眼。 - 翻译的参数是
--target还是--lang?拼写记不准,敲错就报错。 - 要处理的文件名又长又带中文,手敲容易打错,复制粘贴又麻烦。
这些都是敲命令时的体力活。从 v0.7.29 起,42md 支持 shell 的 Tab 自动补全:在命令、子命令或参数后留一个空格,再按下 Tab,剩下的交给终端提示。
二、补全能补什么
- 子命令自动补齐——敲
42md按 Tab,列出可用命令;敲42md tools按 Tab,列出全部内置工具(lint、translate、improve、md2pdf、md2docx、merge、split 等)。 - 参数提示——在某个工具后敲
--再按 Tab,列出它支持的参数,省去翻帮助查拼写。 - 文件路径补全——输入文件名前缀后按 Tab 补齐,长文件名、中文名都不用手敲。
- 只提示能用的命令——补全里只出现面向你的命令和参数,内部命令不会冒出来干扰。
- 跟着版本走——补全内容由当前安装的版本生成,升级后工具有增减,重新生成一次就同步。
三、新装或重装:自动就有
用安装命令装 42md 时,会自动识别你的 shell 并配好补全,重开终端即可生效:
curl -fsSL https://42md.cc/mac | bash
支持 bash、zsh、fish 三种常用 shell。装完重开一个终端窗口,敲 42md (注意 42md 后面有一个空格)再按 Tab 试试。
四、已经装了 42md:一行开启
已经装过的用户,重装一次即可(上面那条命令);也可以手动生成补全文件。
zsh:
mkdir -p "${HOME}/.local/share/zsh/site-functions"
42md completion zsh > "${HOME}/.local/share/zsh/site-functions/_42md"
如果没生效,确认 ~/.zshrc 里先把补全目录加入 fpath,再执行 compinit:
fpath=("${HOME}/.local/share/zsh/site-functions" $fpath)
autoload -Uz compinit
compinit
如果之前已经打开过终端,删掉旧缓存后重开终端:
rm -f "${HOME}/.zcompdump" "${HOME}/.zcompdump.zwc"
bash:
mkdir -p "${HOME}/.local/share/bash-completion/completions"
42md completion bash > "${HOME}/.local/share/bash-completion/completions/42md"
fish:
mkdir -p "${HOME}/.config/fish/completions"
42md completion fish > "${HOME}/.config/fish/completions/42md.fish"
只想在当前终端临时试一下、不写入文件:
source <(42md completion zsh) # zsh
eval "$(42md completion bash)" # bash
42md completion fish | source # fish
42md completion 还支持 powershell 和 elvish,按各自 shell 的补全加载方式引入即可。
五、实际敲一遍
装好补全后,在终端敲命令时按 Tab,大致是这样的体验:
$ 42md <Tab> # 没有空格:补的是命令名,可能会出现同名目录
42md
$ 42md <Space><Tab> # 有空格:补的是 42md 的子命令
auth completion tools
$ 42md tools<Tab> # 没有空格:先补出空格
42md tools<Space>
$ 42md tools <Tab> # 有空格:列出全部内置工具
list info lint translate improve
download hotwords screenshot md2pdf md2html
md2epub md2wechat md2docx merge split
$ 42md tools lint --<Tab>
--check --fix --force --help --style
$ 42md tools translate report<Tab>
report-2026.md report-draft.md
几个细节要注意:
42md<Tab>和42md <Tab>不一样。前者是在补命令名;后者才是在补 42md 的子命令。42md tools<Tab>会先补成42md tools;再按 Tab,才会列出 lint、translate、md2pdf 等工具。- 工具参数从
--开始补,比如42md tools lint --<Tab>。 - 文件名敲个开头再按 Tab,例如
42md tools translate report<Tab>。
六、常见问题
支持哪些 shell?
bash、zsh、fish 三种常用的,安装时自动配好。命令本身还能生成 powershell、elvish 的补全脚本,手动引入即可。
我早就装了 42md,自动更新后为什么没有补全?
自动更新只替换程序本身,不会重跑安装脚本。重装一次(curl -fsSL https://42md.cc/mac | bash)或按第四节手动生成一次即可。
补全里为什么看不到某些命令?
补全只列出面向使用者的命令和参数,内部维护用的命令不会出现,避免干扰。
升级到新版后,补全会自动更新吗?
补全文件不会自动刷新。重装或重新跑一次 42md completion <shell> > <路径>,补全就会跟上新版本的工具列表。
为什么 42md<Tab> 没有列出 auth / tools?
因为光标还在命令名位置,shell 会补“命令名或当前目录里的可执行项”。请在 42md 后面加一个空格,再按 Tab:42md <Tab>。
为什么 42md tools<Tab> 只是多了一个空格?
这是正常的。tools 本身先被补完整;继续按 Tab,或者直接输入 42md tools <Tab>,才会列出全部工具。
工具参数怎么补?
先输入 -- 再按 Tab,例如 42md tools lint --<Tab>。如果是在文件参数位置,直接按 Tab 会按文件名补全。
补全列表怎么收起?
zsh 的补全列表通常不是用 ESC 收起。按 Ctrl+C 取消当前输入;只想清掉屏幕上的候选列表,可以按 Ctrl+L 重绘终端。
会消耗 AI 配额吗?
不会。补全是纯本地的命令行功能,免费,不调任何外部 AI 服务。
七、立即体验
# 安装 / 更新(新装会自动配好补全)
curl -fsSL https://42md.cc/mac | bash
# 已装用户手动开启(zsh 示例)
mkdir -p "${HOME}/.local/share/zsh/site-functions"
42md completion zsh > "${HOME}/.local/share/zsh/site-functions/_42md"
重开终端,敲 42md (带空格)按下 Tab,命令、工具、文件就自动浮现。
42md — 你的 AI 知识快刀。更快地获取、更深地编译、更好地策展、更强的工具。
活水 AI 实验室(42ailab) — 探索智能边界的 AI 创新实验室,以认知科学为基石,推动 AI 与人类智能的深度融合,真正理解并增强智能 —— 碳基的,也是硅基的。