clink inject:进入当前窗口后立即启用 Clink。clink autorun install:让后续打开的 cmd.exe 自动注入。clink info:查看版本、profile 路径、脚本目录和运行状态。clink set:查看全部设置项,适合先搜索再改。clink reload:改完 Lua 脚本后原地重载,不必重开会话。REM 进入 cmd.exe 后的最小起手式
clink inject
clink infoclink inject:先接管当前 cmd 会话。clink info:再看 profile 路径和脚本目录。clink set history.shared true:打开跨窗口共享历史。clink set autosuggest.enable true:打开自动建议。clink set clink.default_bindings windows:先切到熟悉键位。Ctrl-R:验证历史搜索已生效。Tab:验证补全已生效。Right:验证自动建议已生效。REM 接管新机器时的低风险初始化
clink inject
clink set history.shared true
clink set autosuggest.enable true
clink set clink.default_bindings windows
clink infoclink autorun install:安装自动注入,适合作为长期主力终端的起手式。clink info:重新打开一个 cmd.exe 后先用它验证是否真的生效。clink autorun uninstall:不再需要时回退到原生 cmd.exe。cmd.exe:Clink 只增强它;PowerShell 不会直接得到同样行为。REM 安装自动注入
clink autorun install
REM 排查当前终端是否真的进入了 Clink
clink info
REM 不再需要时回退
clink autorun uninstallCtrl-R:反向增量搜索历史Ctrl-S:正向增量搜索历史F7:打开历史列表PgUp:基于当前前缀向后检索历史PgDn:基于当前前缀向前检索历史clink set history.shared true:多窗口共享历史clink set history.dupe_mode erase_prev:重复命令只保留最新一条clink set history.max_lines 25000:扩大历史容量REM 适合长期开发机的历史配置
clink set history.shared true
clink set history.dupe_mode erase_prev
clink set history.max_lines 25000Tab:对当前单词执行补全Ctrl-Space:打开交互式候选列表Alt-=:先看当前候选,不急着插入clink set exec.enable false:不想让首词总去匹配可执行文件时关闭clink set match.substring true:前缀没命中时再用子串匹配clink set match.ignore_case true:大小写不敏感REM 降低“首词补全过度积极”的干扰
clink set exec.enable false
clink set match.substring true
clink set match.ignore_case trueclink set autosuggest.enable true:开启自动建议clink set autosuggest.strategy "match_prev_cmd history completion":优先复用上一条命令上下文,再看历史和补全clink set autosuggest.hint false:只保留建议内容,不显示额外提示文案Right:接受整条建议Ctrl-Right:接受下一个词段Shift-Right:接受下一个完整单词F2:切换建议列表显示REM 保留建议能力,但尽量少打扰
clink set autosuggest.enable true
clink set autosuggest.strategy "match_prev_cmd history completion"
clink set autosuggest.hint falseclink set clink.default_bindings windows:更接近 Windows 用户习惯clink set clink.default_bindings bash:更接近 Bash/ReadlineAlt-H:查看当前键位绑定表Alt-?:查询某个按键绑定到什么命令Ctrl-Z:撤销当前输入编辑Alt-.:插入上一条命令的最后一个参数REM 先切到熟悉的键位,再决定是否细调 inputrc
clink set clink.default_bindings bashclink set:列出全部设置clink set <name>:查看单项值clink set <name> <value>:修改设置clink set <name> unset:回到默认值clink set clink.logo shortclink set clink.logo noneclink set clink.colorize_input trueclink set clink.autostart nulREM 把启动信息降噪,把输入着色打开
clink set clink.logo short
clink set clink.colorize_input trueclink info:先看 profile 路径和脚本搜索目录clink_start.cmd:每次注入后、出现首个提示符前执行%USERPROFILE%\\.inputrc:Readline 风格键位与编辑行为profile.lua:自定义 Lua 入口,优先级高REM 先找到配置文件,再决定改 inputrc 还是 Lua
clink info
notepad %USERPROFILE%\.inputrcprofile.lua:最稳的入口文件clink set clink.path "<dir1>;<dir2>":增加自定义脚本目录clink reload:修改后立即重载-- profile.lua:新版写法用 clink.promptfilter()
local pf = clink.promptfilter(10)
function pf:filter(prompt)
return "[dev] " .. prompt
endclink.path:第一优先级的脚本目录列表,多个目录用分号分隔%CLINK_PATH%:可以用环境变量追加脚本目录clink installscripts <dir>:把目录注册到系统级脚本搜索路径clink uninstallscripts <dir>:取消注册 installscripts 路径completions\:v1.3.23+ 可放按需加载的补全脚本,避免启动时全量载入clink info:当前会话实际扫描到哪些脚本路径,以它为准REM 方式 1:直接设置脚本目录
clink set clink.path "%USERPROFILE%\\clink;%USERPROFILE%\\dotfiles\\clink"
REM 方式 2:用环境变量追加目录
set CLINK_PATH=%USERPROFILE%\company-clink
REM 方式 3:注册系统级脚本目录
clink installscripts "D:\shared\clink-scripts"
REM 最终确认当前会话实际加载路径
clink info%USERPROFILE%\clink\
├─ profile.lua 启动入口
├─ prompt.lua 提示符过滤器
├─ hooks.lua onbeginedit / onendedit 一类事件
├─ utils.lua 公共函数
└─ completions\
├─ git-extra.lua 仅在补全需要时加载
└─ mytool.luaprofile.lua:作为总入口,负责 require 其他模块completions\:只放 argmatcher 一类补全脚本utils.lua:放字符串处理、路径拼接、外部命令封装Lua 5.2:Clink 当前使用的 Lua 版本require:适合拆模块,但入口最好仍由 profile.lua 统一调度local:默认优先用 local,避免污染全局-- profile.lua:最小可运行示例
local M = {}
local function hello()
print("clink script loaded")
end
hello()
return Mlocal x = 1:定义局部变量local function f():定义函数{}:Lua 的 table,同一套结构同时承担对象和数组角色..:字符串拼接obj:method():冒号调用,会自动传 selfif ... then ... end:条件判断for _, v in ipairs(t) do:遍历顺序数组local colors = {
ok = "\x1b[92m",
reset = "\x1b[m",
}
local function add_prefix(text)
return colors.ok .. "[ok] " .. colors.reset .. text
endCtrl-x Ctrl-r:默认触发 clink-reload,重载配置和 Lua scriptsclink reload:命令行里主动重载clink.reload():在脚本或命令里主动触发 reloadclink info:reload 后再次确认脚本路径和 profile 是否正确REM 外层工作流:改脚本 -> 重载 -> 验证
notepad D:\clink\profile.lua
clink reload
clink info-- 某些场景下也可以在脚本里主动要求重载
clink.reload()clink.promptfilter():注册新版 prompt 过滤器clink.onbeginedit():每次进入输入编辑前触发clink.onendedit():每次结束输入编辑后触发clink.argmatcher():给命令挂自定义补全clink.reload():触发重载os.getcwd():获取当前目录os.getenv():读取环境变量io.popen():调外部命令并读输出local pf = clink.promptfilter(30)
function pf:filter(prompt)
return os.getcwd() .. " > "
end
local function before_edit()
-- 这里适合做轻量初始化
end
clink.onbeginedit(before_edit)profile.lua:你自己的主入口,最适合个人长期配置clink.path:需要精确控制脚本目录优先级时选它%CLINK_PATH%:适合临时注入或跟随外部环境切换clink installscripts:适合包管理器、团队共享脚本、系统级注册completions\:只想按需加载补全,不想拖慢启动时选它clink.argmatcher("mytool"):获取某个命令的补全器:addarg({...}):添加位置参数候选:addflags({...}):添加 flag 候选:nofiles():禁止当前位置退回文件补全-- 为 mytool 建一个够用的第一版补全
local m = clink.argmatcher("mytool")
m:addflags("--help", "--verbose", "--json")
m:addarg({ "start", "stop", "status", "doctor" })-- 临时断点:确认脚本是否执行到这里
pause()