如果是这样,则可以编写脚本来更改 tmux 的哪个嵌套级别基于上下文处理事件。例如,如果嵌套的内部 tmux 在其当前窗口中仅打开一个窗格,我希望主机 tmux 处理一个键。
主机 tmux 可以知道它的当前窗格正在运行一个 tmux,这让它“通过”密钥。
但是现在子 tmux,如果它的当前窗口只有一个窗格,告诉主机tmux“哦,谢谢,我只有一个窗格”,这样主机 tmux 就可以继续执行如果它的窗格通常会做的事情没有运行 tmux。
现在至少有两种方法:一种就像我描述的那样,主机 tmux 总是传递给内部 tmux。这里的问题是我不知道内部 tmux 如何检测 (1) 它本身在 tmux 中运行,因此它知道报告和 (2) 如何向其主机 tmux 报告有关其情况的任何事实。例如,我的 vimrc 通过tmux
从 Vim(即 vimscript system('tmux select-pane .+')
)中调用 to 来做到这一点。
另一种方法是以某种方式让外部 tmux 找出内部 tmux 是哪个套接字,并调用tmux -S innertmux-socket
以推断内部 tmux 的状态,并根据该信息确定是否发送命令。仅基于其自己的 tmux 变量,无法确定该套接字的路径,但我认为使用一些有针对性的 shell 脚本,这不会太难。
欢迎开场玩笑...
不过这个问题很严重。这不是开玩笑。还有其他方法可以实现这一目标吗?