You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tmux如何使用choose-tree过滤当前会话窗口并自定义输出格式

问题根因

组合命令失效的核心原因是run-shell执行命令时会提前做一次格式占位符展开:你之前写的-F "#{window_name}"没有做转义,会在run-shell阶段就被替换为触发按键时的活动窗口名称,传给choose-tree时已经是固定字符串,最终所有条目都会显示同一个窗口名。

正确配置

推荐直接绑定choose-tree命令,不需要嵌套run-shell,也不需要额外转义格式符,写法更简洁:

bind-key w choose-tree -Nw -f "#{==:#{session_name},#{session_name}}" -F "#{window_name}"

如果你需要保留run-shell的写法,只要给-F对应的格式占位符也加上##转义,和过滤规则的转义逻辑保持一致即可:

bind-key w run-shell 'tmux choose-tree -Nwf"##{==:##{session_name},#{session_name}}" -F "##{window_name}"'
参数说明
  • -N:启动choose-tree时默认聚焦窗口列表,而非会话层级
  • -w:初始视图以窗口为维度展示条目
  • -f:指定条目过滤规则,#{==:#{session_name},#{session_name}}会匹配所属会话名等于当前触发按键时所在会话名的条目,实现仅展示当前会话窗口的效果
  • -F:指定单条条目的展示格式,传入#{window_name}时仅显示窗口名称,不会输出主机名、会话名等冗余内容

转义规则提示:当tmux命令嵌套在run-shell内执行时,所有需要交给内层命令解析的格式变量,都要将前缀#双写为##,避免被外层run-shell提前展开替换为固定值。

内容的提问来源于stack exchange,提问作者OlivierLarue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:39:35