触发层
单触发词、多触发词、整词匹配、大小写传递、正则触发词,以及同一触发词的多选消歧。
功能特性
Espanso 的基础模型只有「触发器 → 替换内容」,但在这条主线之上,它提供了正则触发、表单、脚本、包管理等扩展能力。下面按能力层次逐项说明,每项都附可运行的配置示例。若还不熟悉这类工具的基本原理,建议先读文本扩展工具指南。
单触发词、多触发词、整词匹配、大小写传递、正则触发词,以及同一触发词的多选消歧。
纯文本、多行文本、图片、Markdown 与 HTML,以及可从主题继承的富文本格式。
日期、剪贴板、随机、选择、回显、Shell 命令、外部脚本与表单,可组合出完整的输入流程。
01 · 触发方式
触发词是你在输入时键入的字符串,本身可以是任意字符组合。社区习惯以 : 开头,因为它几乎不会出现在正常词语的开头,能显著降低误触发概率。
一个 trigger 对应一段 replace;需要多个别名时改用 triggers 列表,它们展开为同一段内容。
matches:
- trigger: ":tel"
replace: "0755-8601-XXXX"
- triggers: [":wx", ":wechat", ":微信"]
replace: "微信号:espanso_cn"
用于纠错类场景:word: true 只在该词独立成词时触发,不会把 other 误改成 othere;propagate_case: true 会保留你输入时的大小写风格。
- trigger: "alh"
replace: "although"
word: true
propagate_case: true
# alh → although
# Alh → Although
# ALH → ALTHOUGH
用 regex 取代 trigger,即可用完整正则语法定义触发条件。Espanso 会把命名分组自动转换为变量,直接写进替换内容或传给脚本。
- regex: ":id-(?P<num>\\d{4})"
replace: "工单编号 #{{num}}"
# 输入 :id-2048 → 工单编号 #2048
命名分组必须写成 (?P<名称>…),缺少 P 不会生效——Espanso 使用的是 Rust regex 语法。
如果多条规则共用同一个触发词,Espanso 不会随机选一个,而是弹出选择框让你挑。签名、报价模板这类有多版本的场景很实用。
- trigger: ":sig"
replace: "此致敬礼,\n张工 · 产品部"
label: "正式签名"
- trigger: ":sig"
replace: "祝好,\n张工"
label: "简短签名"
02 · 动态内容
在 vars 中声明变量,再在 replace 里用双花括号引用。变量可以组合使用,也可以声明为全局变量在多个规则间复用。
| 扩展 | type 值 |
主要参数 | 适用场景 |
|---|---|---|---|
| 日期 | date |
format、offset、locale、tz |
插入今天、昨天、一周后的日期,支持时区 |
| 剪贴板 | clipboard |
无 | 把当前复制的内容嵌入模板,如链接文本 |
| 随机 | random |
choices |
从预设列表中随机取一句,避免重复措辞 |
| 选择 | choice |
values(可含 label 与 id) |
弹窗让你从候选项中挑一个值 |
| 回显 | echo |
echo |
定义常量,常配合全局变量复用 |
| Shell 命令 | shell |
cmd、shell、trim、debug |
执行系统命令并插入标准输出 |
| 外部脚本 | script |
args(解释器与脚本路径) |
调用 Python、Node、Shell 等任意脚本 |
| 表单 | form |
字段定义 | 多字段输入,结果可继续传给脚本 |
format 使用 Rust chrono 的格式串:%Y 年、%m 月、%d 日、%H:%M 时分。offset 以秒为单位,负数表示过去。
- trigger: ":nextweek"
replace: "{{d}}"
vars:
- name: d
type: date
params:
format: "%Y年%m月%d日"
offset: 604800 # 7 天
把复制的内容包进指定格式。$|$ 用于指定展开后光标停留的位置,省去再按方向键的步骤。
- trigger: ":link"
replace: "[{{clip}}]({{url}})$|$"
vars:
- name: clip
type: clipboard
- name: url
type: clipboard
关于性能:官方文档明确建议,script 与 shell 只用于执行很快的命令。若脚本耗时较长,展开时会出现可感知的等待,影响输入连贯性。
03 · 表单与脚本
表单在底层同样以扩展形式实现,但会弹出一个带字段的输入窗口。填入的值不仅能拼进文本,还能作为参数传给脚本,从而把一次展开变成一次小型工作流。
- trigger: ":quote"
form: |
客户:[[customer]]
金额:[[amount]] 元
有效期:[[valid]]
备注:[[note]]
form_fields:
valid:
type: choice
values:
- "30 天"
- "60 天"
- "90 天"
note:
type: text
multiline: true
[[字段名]] 声明占位,Espanso 自动生成对应输入框。multiline: true)、下拉选择(type: choice)与列表框(type: list)。shell 参数显式指定 bash、zsh、fish、pwsh 等。scripts/ 下,用 %CONFIG%/scripts/xxx.py 写路径,换机器不用改。CONFIG(配置目录路径)以及此前已求值的变量。shell 加上 debug: true 会把执行详情写入日志,用 espanso log 查看。安全提醒:脚本与 Shell 扩展等价于让 Espanso 以你的用户身份执行命令。只使用自己编写或已审查过的脚本,不要直接安装来源不明的配置包。
04 · 富内容
替换内容可以是图片文件,也可以按 Markdown 或 HTML 渲染。这在邮件客户端、笔记软件与在线编辑器中尤其有用——同样的片段在不同程序里保持一致的样式。
用 image_path 指向本机图片文件,适用于插入 logo、签名图、流程图截图。路径基于配置目录解析,便于整个配置目录一起迁移。
用 markdown 字段代替 replace,展开时按 Markdown 转为富文本,适合粗体、列表、链接等结构。
用 html 字段输出 HTML 片段,配合表格、样式与内联链接,在支持富文本粘贴的程序中保留结构。
兼容性差异:富文本的实际效果取决于目标程序是否接受富文本粘贴。在终端、代码编辑器等纯文本环境中,Espanso 会自动回退为纯文本输出。若某程序表现异常,可为其单独设置 backend: clipboard 或 keys。
05 · 精细控制
通过 filter_title 按窗口标题匹配程序,再配合 extra_includes 引入专属片段文件。这样在 IDE 里只出现代码片段,在邮件客户端里只出现话术模板,搜索栏也不会被无关条目塞满。
filter_title: "Visual Studio Code"
extra_includes:
- "../match/_code_snippets.yml"
backend: "clipboard"
config/default.yml,对所有程序生效。config/ 下新建文件,用 filter_title 或 filter_class 指定目标程序,覆盖默认设置。match/ 下的文件可按主题拆分,用 extra_includes 组合,避免单文件过长。undo_backspace: false 关闭。Alt + Space 外,也可配置成输入某个字符串唤起搜索栏。06 · 生态
Espanso 自带包管理器,配合官方包仓库 Espanso Hub 使用。社区的包覆盖颜文字、数学符号、各国变音字符、常用命令行片段等,安装后即可直接触发。
# 安装基础颜文字包
espanso install basic-emojis
# 若安装后未自动生效,重启一次
espanso restart
# 查看已安装的包
espanso package list
手写几百条符号映射既枯燥又容易出错。包把这类工作交给社区维护:安装一个包,就能获得一整套经过整理的触发词;后续作者更新,你重新安装即可获得改进。
把片段整理成符合规范的目录结构,附带一份说明文件,就能提交到 Hub 供他人安装。团队内部也可以维护私有包,统一话术与模板版本。需要注意,社区包可能包含脚本,安装前应先审查内容——相关风险说明见常见问题。
| 维度 | 实际情况 |
|---|---|
| 图形界面 | 以文件化配置为主,官方说明 GUI 仍在规划中。日常增删片段需要编辑 YAML 文件。 |
| Linux Wayland | 官方标注为实验性支持,需要额外授予 capability 权限;非美式键盘布局必须手动指定。 |
| Windows ARM | 目前仅支持 x64 架构,ARM 版本仍在计划中。 |
| 云端同步 | 不提供账号与云同步,跨设备需自行用 Git、网盘或同步工具管理配置目录。 |
| 移动端 | 仅面向桌面系统,没有 iOS 或 Android 版本。 |
| 长耗时脚本 | 同步执行,脚本越慢展开等待越明显,官方建议只用于快速命令。 |
如果你更看重图形界面、团队共享或移动端支持,这几项限制可能直接影响选型。完整的横向对比与替代方向见 工具对比与选型;各项限制的具体应对方法见 常见问题;想知道这类工具与输入法的本质区别,可先读 文本扩展工具指南。
安装包 5–19 MB,装完即可用内置的 :espanso 示例验证是否生效。