Mac端Espanso调用Shell脚本时末尾空格换行被截断如何解决?
解决Mac上Espanso截断Shell脚本末尾换行/空格的问题
Espanso默认会自动修剪Shell脚本输出的末尾空白字符(包括换行、空格),这就是问题的根源。以下是两种直接有效的解决方式:
方法1:修改Espanso匹配规则,禁用末尾修剪
在你的Espanso匹配配置中,给Shell扩展添加trim: false参数,明确告诉Espanso不要修剪输出的末尾空白。示例配置如下:
matches: - trigger: ":my_script" replace: "{{script_output}}" vars: - name: script_output type: shell params: cmd: "/Users/xxx/your_script.sh" # 替换成你的脚本实际路径 trim: false # 核心配置:禁用末尾空白修剪
添加该参数后,脚本输出的所有内容(包括末尾的\n\n或空格)都会完整插入到输入位置。
方法2:给脚本输出追加占位符(无需修改Espanso配置)
如果不想调整Espanso配置,可以在脚本输出末尾追加一个特殊标记,之后在Espanso的替换规则里移除这个标记:
- 修改你的Shell脚本,在最后一行添加(用
-n避免额外生成换行):
echo -n "__KEEP_TRAILING__"
- 调整Espanso的匹配规则,替换掉占位符:
matches: - trigger: ":my_script" replace: "{{script_output|replace('__KEEP_TRAILING__', '')}}" vars: - name: script_output type: shell params: cmd: "/Users/xxx/your_script.sh"
这样Espanso会保留包含占位符的完整输出,移除占位符后,原本的末尾空白就能被正常保留。
内容的提问来源于stack exchange,提问作者Ruud Peter Boelens
相关产品推荐
相关产品推荐

