如何在嵌套 tmux 中滚动?

问题描述 投票:0回答:2

有时,我必须使用嵌套的 tmux 会话(tmux in tmux)。通过复制模式滚动在内部 tmux 会话中不起作用,因此这使我在内部会话中非常不方便。

我听说有元键可以将 tmux 命令发送到内部会话。有有效的按键绑定可以在内部会话中滚动吗?

tmux
2个回答
1
投票

tmux copy-mode
会做到的。运行该命令将在内部会话中更改为复制模式,您可以像往常一样滚动。

另一个选项是使用

bind
send-prefix
,将某个键绑定到
send-prefix
操作,该操作将前缀发送到嵌套会话。就我而言,它是:

set -g prefix C-a
bind a send-prefix

默认前缀是

C-b
,在这种情况下使用
b
可能更合理。

这样,您只需按 Control+A (或 B 或其他),然后释放 Control 并再次按相同的键(在我的情况下,A,B 对于使用默认

C-b
前缀的人来说似乎更好,恕我直言)。这会将前缀发送到内部会话。现在,无论您按下什么键,都会在内部会话中触发一个命令。即:[Control+A] 然后 [%] 为我垂直分割窗口。当然,这是在外部会议上。然后使用我提到的
send-prefix
绑定,我可以执行 [Control+A] 然后 [A] 然后 [%],它会在内部会话中分割窗口。

它非常漂亮,在连接到服务器时对于滚动内容、搜索等很有用,一旦你习惯了它,它就会变成肌肉记忆。另外,您可以执行 [Ctrl+A] 然后 [A] 然后 [D] 来分离内部会话,这将让您

exit
建立 ssh 连接,或者完全结束 SSH 连接(如果您有自动启动 tmux 的配置)正在连接。

当然,您可以将

send-prefix
绑定到其他键,可能使用
-n
,这样您就可以使用 [Ctrl+A] 之类的内容作为前缀,使用 [Ctrl+S] 之类的内容将前缀发送到内部会议。


0
投票

我也遇到了这个问题,但意识到我的本地

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
© www.soinside.com 2019 - 2024. All rights reserved.