tmuxinator配置含printf命令时仅首个窗格执行正常如何解决
问题诱因
你配置中printf语句的转义序列存在YAML解析与shell执行的双重转义冲突。你当前书写的printf '\033]2;%s\033\\' 'healthcheck'中,末尾的\033\\在经过YAML解析后会变成\033\,多出的裸露反斜杠会被shell识别为续行符,导致后续的cd、clear等命令被合并为printf的参数被吞掉,不会独立执行。仅有每个窗口的第一个窗格因为解析顺序的原因未触发该冲突,其余窗格都会出现命令截断问题。
解决方案
两种方案均可以在保留窗格标题设置需求的前提下解决问题:
方案1:修正printf的转义写法
调整printf语句的转义规则,避免生成多余的续行反斜杠,以下两种修改方式均可生效:
- 用双引号包裹转义序列,调整转义符数量:将原语句改为
printf "\033]2;%s\033\\" '自定义标题名' - 用
\e代替\033简化转义:将原语句改为printf '\e]2;%s\e\\' '自定义标题名'
修改后的窗格配置示例:
panes: - health: - printf "\033]2;%s\033\\" 'healthcheck' - cd dev-env - clear
方案2:使用tmuxinator原生窗格标题配置(更稳定)
你使用的tmuxinator 3.0.1版本原生支持直接为窗格指定title参数,不需要手动写printf发送转义序列,完全避免转义冲突问题,修改后的完整配置如下:
pre_window: windows: - workspace: layout: even-vertical panes: - health: title: healthcheck - cd dev-env - clear - work: title: workspace - clear - api: layout: even-vertical panes: - database: title: api-database - cd api - docker-compose up - server: title: api - cd api - yarn watch - workspace: title: api-workspace - cd api - clear
内容的提问来源于stack exchange,提问作者Alexander Zeitler
相关产品推荐
相关产品推荐

