为什么还需要 CMD

你可能会说:现在有 PowerShell、Windows Terminal、WSL,CMD 还有什么用?

现实中,CMD 在以下场景仍然不可替代:

  • 老旧的 .bat 脚本仍然依赖 CMD 的解析;
  • 某些系统命令(如 systeminfosc)只在 CMD 下行为稳定;
  • 一些远程工具只允许调用 CMD;
  • 老项目的 README 里写的"在 CMD 里运行"。

所以——CMD 仍然会用,但用 Clink 把它变得顺手。

Clink 是什么

Clink 是一个开源的 CMD 增强工具,本质是一个 DLL,通过 cmd /K clink_init.cmd 或注入到 CMD 进程里。它提供的核心能力包括:

  • 命令和路径自动补全Tab);
  • 历史记录搜索Ctrl + RCtrl + S);
  • 行编辑增强Ctrl + A 到行首、Ctrl + K 删到行尾);
  • 语法着色:命令、参数、路径不同颜色;
  • 可扩展补全:通过 Lua 脚本添加对 git、npm、python 等命令的智能补全。

它不修改 CMD 本身,只是"挂"在 CMD 上,输入体验立刻现代化。

安装

GitHub Releases 下载最新安装包(clink_x64.exe 或 MSI 安装包)。

运行安装包,默认选项即可:

  • 勾选"Add Clink to CMD.exe autorun"——让 CMD 启动时自动加载 Clink;
  • 勾选"Add to PATH"——命令行可调用 clink 相关工具。

安装完成后再打开 CMD,第一次会在底部看到一行 Clink X.Y.Z (built ...)——这就是 Clink 加载成功的标志。

核心快捷键(立刻上手)

装好 Clink 后,立刻就能用的几个键位:

快捷键作用
Tab补全路径/命令;多次按循环候选项
Ctrl + R反向搜索历史(输入关键词即可过滤)
Ctrl + S正向搜索历史
Ctrl + A / Ctrl + E跳到行首 / 行尾
Ctrl + K / Ctrl + U删到行尾 / 行首
Ctrl + W删一个词
Alt + B / Alt + F按词向左 / 向右移动光标
Up / Down在历史里上下翻(支持按前缀过滤)

最常用的是 TabCtrl + R——前者省去敲路径,后者省去翻历史。

可扩展补全:clink-completions

官方提供了 clink-completions 项目,给各种命令(git、npm、yarn、pip、docker、kubectl 等)加上智能补全。

安装方式:

  1. 从 GitHub clone 或下载 ZIP;
  2. 把里面的所有 Lua 文件复制到 %LOCALAPPDATA%\clink 目录;
  3. 重启 CMD 即可。

装好之后,输入 git cheTab,会自动补全到 checkout;输入 npm in 会列出 installinitinstall-test 等候选项。

历史记录的妙用

Clink 把历史记录保存在 %LOCALAPPDATA%\clink\clink_history,可以跨会话保留。

几个高级用法:

  • history 命令:列出所有历史(可加数字限定条数);
  • !n:执行历史中第 n 条命令;
  • !!:执行上一条命令;
  • !str:执行最近一条以 str 开头的命令。

很多人不知道的是,Clink 历史可以跨 CMD 窗口共享。在多个标签里同时操作时非常方便。

配置:clink 设置文件

Clink 的设置存在 %LOCALAPPDATA%\clink\settings 里。可以用 clink set 命令查看和修改:

clink set echo_off 0
clink set exec_match_style unambiguous
clink set autosuggest_enable true

常用设置项:

  • exec_match_style:补全匹配风格(prefix/contains/fuzzy);
  • history_file_lines:历史保留条数;
  • color_scheme:配色方案;
  • autosuggest_enable:开启历史命令灰字提示(类似 Fish Shell);
  • prompt_prefix / prompt_suffix:自定义提示符。

执行 clink set 不带参数会列出所有可配置项。

自定义提示符:让 CMD 像 Linux

默认 CMD 提示符是 C:\Users\xxx>,Clink 提供了更丰富的提示符变量:

clink set prompt_prefix "{green}{cwd}{reset} $ "

支持的颜色变量:{red} {green} {blue} {yellow} {cyan} {magenta} {reset};路径变量:{cwd}{user}{host}{git}(需 git 集成 Lua 脚本)等。

配好之后,CMD 提示符立刻"现代化"。

和 Windows Terminal 配合

Clink 不影响 Windows Terminal 的使用。在 Windows Terminal 里把 CMD 作为一个 profile,启动后自动加载 Clink,体验直接起飞。

推荐 Windows Terminal 的 CMD 配置:

  • 字体:Cascadia CodeJetBrains Mono
  • 背景:深色(深灰/纯黑);
  • 光标:竖线;
  • 配色:One Half DarkTango Dark

这样组合出来的 CMD,既保留了原生兼容,又拥有了现代终端的体验。

常见问题

Q:装完 Clink 后 CMD 还是没有变化?
A:检查是否勾选了"Add Clink to CMD.exe autorun"。如果忘记勾选,可以手动执行 clink autorun install

Q:会不会和 PowerShell 冲突?
A:不会。Clink 只作用于 CMD 进程,PowerShell 是另一个程序。

Q:占用资源大吗?
A:基本可忽略,运行时内存占用 < 10MB。

总结

Clink 是一个零学习成本就能立刻提升 CMD 体验的工具。装好之后,路径补全、历史搜索、行编辑这些"本来就应该有"的功能就都到位了——它不改变 CMD 的行为,只是把它变得人性化。

如果你的工作流里仍然会出现 CMD(比如一些脚本、一些老工具),强烈建议装一个 Clink,再配合 Windows Terminal 使用。整套体验比"裸 CMD + cmd.exe"好上不止一个等级。