跳转到主内容
版本发布

42md 命令补全上线:敲一半按下 Tab,命令、工具、文件自动补齐

老是记不住 `42md tools translate` 后面跟哪些参数?`--target` 还是 `--lang`?文件名又要手敲一长串?v0.7.29 起,42md 在终端支持 Tab 补全:在命令或参数后留一个空格,再按 Tab,子命令、全部内置工具、参数和文件路径自动提示。支持 bash、zsh、fish 三种常用 shell,新装或重装时自动配好,已经装过的也能一行命令开启。纯命令行体验升级,免费,不消耗 AI 配额。

8 分钟
产品发布命令行Tab 补全效率

一、总记不住完整命令?交给 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 与人类智能的深度融合,真正理解并增强智能 —— 碳基的,也是硅基的。

官网https://42md.cc