![可以在 tmux 中设置每个会话/上下文相关的键绑定吗?](https://linux22.com/image/1535352/%E5%8F%AF%E4%BB%A5%E5%9C%A8%20tmux%20%E4%B8%AD%E8%AE%BE%E7%BD%AE%E6%AF%8F%E4%B8%AA%E4%BC%9A%E8%AF%9D%2F%E4%B8%8A%E4%B8%8B%E6%96%87%E7%9B%B8%E5%85%B3%E7%9A%84%E9%94%AE%E7%BB%91%E5%AE%9A%E5%90%97%EF%BC%9F.png)
我使用 tmux 做所有事情,因此.bashrc
每当我进入 shell 时,我都会在我的 tmux 中创建一个会话/附加会话。有时,我会通过 ssh 进入具有相同配置的计算机。因此,我已经在本地计算机上处于 tmux 会话中,在通过 ssh 进入远程计算机后,我又在远程计算机上处于另一个 tmux 会话中。
我已经C-a
在两台机器上都设置了前缀,因此最终发生的情况是,C-a
将前缀发送到本地,同时C-a C-a
将前缀发送到远程机器的 tmux 会话中。
我想为本地和远程会话设置两个不同的前缀(例如`
vs. C-a
)。但远程机器就在楼下,我可能想直接走到那里,在全新的 tmux 会话中对其进行操作,只使用C-a
我习惯的前缀。但由于`
在 tmux 会话中设置为前缀ssh
,因此现在适用于全部tmux 会话,现在我必须按两次反引号才能在命令行上输入一次。
有没有办法在 tmux 中为不同的会话设置单独的前缀(或一般的键绑定)?还是我应该忍受并习惯双击C-a
?
答案1
在 tmux 的 shell 里面(临时解决方案):
tmux bind-key -n '`' 'send-keys C-a'
或者在您的.tmux.conf
(永久配置,在新的 tmux 服务器启动时应用):
bind-key -n '`' 'send-keys C-a'
此绑定将使你的 tmux 发送C-a
。`但不是发送给它自己,而是发送给在当前(本地)窗格中运行的程序(例如ssh
)。实际上`将执行你的Ctrl+ a、Ctrl+a所做的操作。
使用标准 tmux 配置(C-b
前缀为 )的用户应该使用send-keys C-b
。