有时候,我需要使用嵌套的tmux会话(即在tmux中再次使用tmux)。在内部tmux会话中,复制模式下的滚动不起作用,因此在内部会话中非常不方便。
我听说有一种元键可以将tmux命令发送到内部会话。是否有任何有效的键绑定可用于在内部会话中滚动?
有时候,我需要使用嵌套的tmux会话(即在tmux中再次使用tmux)。在内部tmux会话中,复制模式下的滚动不起作用,因此在内部会话中非常不方便。
我听说有一种元键可以将tmux命令发送到内部会话。是否有任何有效的键绑定可用于在内部会话中滚动?
tmux copy-mode
可以实现这个功能。运行该命令将在内部会话中切换到复制模式,您可以像平常一样滚动。
另一个选项是使用bind
和send-prefix
,将某些键绑定到send-prefix
操作,该操作将前缀发送到嵌套会话。在我的情况下,它是:
set -g prefix C-a
bind a send-prefix
C-b
,在这种情况下使用b
可能更合理。C-b
前缀的人中似乎B更好,个人认为)。这会将前缀发送到内部会话。现在,您按下任何键都会触发内部会话中的命令。例如:[Control+A]然后[%]会在我的电脑上垂直拆分窗口。当然,这是在外部会话中。然后,使用我提到的send-prefix
绑定,我可以执行[Control+A],然后[A],然后[%],它会在内部会话中拆分窗口。send-prefix
绑定到其他键,可能使用-n
,这样您就可以将[Ctrl+A]作为前缀,将[Ctrl+S]用于将前缀发送到内部会话。tmux.conf
使用的是vi的按键绑定来进行复制模式,而我的远程(嵌套)会话没有。你可以通过将以下内容添加到你的本地和远程tmux.conf
来在两个会话中都使用vi的按键绑定。# Use vim keybindings in copy mode
setw -g mode-keys vi
prefix + prefix + [
在嵌套会话中进入复制模式并使用vi键绑定来移动,要么可以将某个按键映射为将前缀发送到嵌套会话中,将以下内容放入您的本地tmux.conf
文件中:# Use Ctrl-a to send prefix to nested session
bind-key -n C-a send-prefix