Files
nyaterm/docs-site/docs/guide/quick-commands.md
T
Kang dc5fe7a282 fix(commands): preserve workspace input guards when syncing target branch
Merge migration/gpui at 2a27ce375 and retain its is_session rule in the shared input guard. Cover file manager tabs with actual TCP regression tests and document that cancellation leaves already sent text in the remote terminal.
2026-10-22 01:05:04 +08:00

206 lines
6.9 KiB
Markdown

# 快捷命令
快捷命令功能让你可以把常用命令保存成可复用动作,在工作区里快速发送到当前终端。
## 用途
- 高频执行固定运维命令
- 保存带参数模板的部署 / 排障脚本
- 把常见命令按产品、环境或团队分类
- 把危险命令先放到输入行检查,再决定是否执行
## 创建快捷命令
1. 打开底部或侧边的 **快捷命令** 区域
2. 点击 **添加**
3. 在独立子窗口中填写命令信息
可配置字段包括:
| 字段 | 说明 |
|------|------|
| 标签名称 | 命令的显示名称 |
| 分类 | 命令所属分类 |
| 描述 | 命令说明(可选) |
| 颜色标签 | 自定义显示颜色 |
| 图标 | 自定义图标 |
| 置顶显示 | 是否优先显示在列表顶部 |
| 执行模式 | 立即执行或追加到输入行 |
| 命令脚本 | 要发送到终端的命令内容 |
保存后,命令会出现在快捷命令列表中,可继续编辑或删除。
## 执行模式
### 立即执行
点击后直接发送到当前终端并执行,用于:
- 确认无误的常用命令
- 日常巡检
- 固定格式的只读查询
### 追加到输入行
点击后只把命令放到输入行,不自动回车,用于:
- 还要再检查参数的命令
- 可能需要二次修改的脚本片段
- 有一定风险、希望人工确认的操作
## 变量提示
命令脚本支持 `{{变量名}}` 语法注入动态参数,例如:
```bash
docker exec -it {{容器名}} bash
```
执行时会弹出变量填写对话框,让你把模板命令补全后再发送。
## 转义序列与暂停
命令脚本里的这些写法会在发送时被解释:
| 写法 | 发送内容 |
|------|----------|
| `\r` | 回车 |
| `\n` | 换行 |
| `\t` | 制表符 |
| `\p` | 暂停 1 秒后继续发送后面的内容 |
| `\\` | 一个反斜杠 |
其它反斜杠序列保持原样,所以正则的 `\d`、Windows 路径 `C:\Users` 不会被打乱。想发送一个字面反斜杠时写成 `\\`。
登录设备、串口菜单或老系统经常需要「发出一段、等一秒、再发下一段」,把 `\p` 写在两段之间即可:
```text
admin\r\psecret\r\pdisplay version
```
这段脚本会先发送 `admin` 和回车,等待 1 秒,再发送 `secret` 和回车,再等待 1 秒后发送 `display version`。`\p` 只负责暂停,登录交互中的每次提交都需要显式写出 `\r`。连续写 `\p\p` 会等待 2 秒。
目标会话在脚本开始发送时固定(如有变量,则在提交变量后固定)。暂停期间切换标签不会改变目标。在某个目标会话中发送新快捷命令、手动输入或粘贴,会取消旧脚本对此会话的后续发送,其他目标继续执行。断开或关闭会话也会取消其剩余步骤。
取消只会阻止尚未发送的内容,已经发送到远程终端的前缀仍然保留,新输入可能直接接在它后面。例如,`old\pobsolete` 在暂停时被 `new command` 替代,终端可能收到 `oldnew command`。继续输入前请确认远程提示和已有内容,尤其是在登录交互中。NyaTerm 不会自动发送 Ctrl+C 或清除输入,因为不同设备和交互程序对控制字符的含义不同。
开启同步输入或使用「发送到所有会话」时,每个会话按同样的分段发送。
`\n`、`\t` 只影响脚本本身:执行模式仍然只决定最后一段要不要补回车,脚本末尾已经有 `\r` 或 `\n` 时不会多加一个。
变量填写对话框里输入的值按字面发送:值里的反斜杠不会被解释成转义或暂停,只有写在模板里的 `\p` 才会停顿。
## 分类、搜索、排序与视图
快捷命令面板支持这些管理方式:
- 通过搜索框按标签、命令内容或描述过滤
- 通过分类下拉框只看某一类命令
- 创建、重命名、移动和排序分类
- 置顶命令优先显示在列表顶部
- 按名称、使用频率、最近使用等排序模式整理列表
- 在紧凑视图和常规视图之间切换,以适配不同面板宽度
- 已保存分类会被复用,新命令也可以继续补充分类;导入时也会尽量保留外部文件中的分类结构
常见的分类方式:
- K8s
- Docker
- 数据库
- 发布脚本
- 环境巡检
## 导出快捷命令
在快捷命令面板右上角点击 **导出快捷命令**,把当前快捷命令和分类导出为 NyaTerm JSON 文件。导出文件可用于:
- 在另一台设备上通过 **导入快捷命令** 合并
- 作为团队模板分发
- 在做大规模分类整理前留一份可回退副本
导出不会包含终端历史或其他应用设置;它只覆盖快捷命令和分类数据。
## 导入快捷命令
在快捷命令面板右上角点击 **导入快捷命令**,可以从外部文件批量导入。导入会按命令 ID 合并覆盖,不会清空现有快捷命令。
### 从 WindTerm 导入
WindTerm 的快捷命令文件通常位于:
```text
~/.wind/profiles/default.v10/terminal/quickbar.config
```
在 Windows 上可以在用户目录下找到对应路径:
```text
C:\Users\<用户名>\.wind\profiles\default.v10\terminal\quickbar.config
```
选择 **WindTerm Quickbar** 后,选中这个 `quickbar.config` 文件即可导入。NyaTerm 会读取 `quick.label`、`quick.text`、`quick.group` 和 `quick.uuid` 等字段,并把 WindTerm 的 `Send Text` 类型导入为 **追加到输入行**,避免点击后立即执行脚本。
### 从 JSON 文件导入
选择 **NyaTerm JSON** 后,可以导入下面这种 JSON 文件:
```json
{
"categories": [
{
"id": "general",
"name": "General"
},
{
"id": "k8s",
"name": "Kubernetes"
}
],
"commands": [
{
"id": "cmd-list-files",
"label": "List files",
"command": "ls -la",
"category_id": "general",
"description": "List files with details",
"color_tag": "blue",
"icon_tag": "terminal",
"pinned": true,
"execution_mode": "execute",
"source": "manual",
"risk_level": "low"
},
{
"label": "Kubernetes pods",
"command": "kubectl get pods -A",
"category": "Kubernetes",
"execution_mode": "append",
"risk_level": "low"
}
]
}
```
说明:
- `categories` 可以省略;使用 `category` 名称时,分类不存在会自动创建
- `id` 可以省略;省略后会自动生成
- `execution_mode` 支持 `execute` 或 `append`
- `source` 支持 `manual` 或 `ai`
- `risk_level` 支持 `low`、`medium`、`high`、`critical`
## 与工作区配合的使用方式
快捷命令并不绑定某一类会话。只要当前终端可接收输入,你就可以把命令发送到:
- SSH 会话
- 本地终端
- 某些需要批量发指令的串口场景
常见搭配方式:
- 左边看日志,右边通过快捷命令触发诊断脚本
- 远程 SSH 执行部署命令,本地终端同时做构建或 Git 操作
- 把变量化命令做成团队共享模板,减少人工拼写错误
- 将 AI Assistant 生成并通过审批的命令保存为快捷命令,后续按固定模板复用