使用 tmux 在终端中进行鼠标滚动和选择

Mouse scrolling and selection in terminal with tmux

我刚刚从 GNU screen 切换到 tmux 2.0,我惊讶地发现我无法再回滚终端历史记录使用鼠标滚轮和 Shift-PgUp/Shift-PgDn.

这让我很反感。如何使用 tmux terminal 滚动?

PS。我知道我可以 set-window-option -g mode-mouse on 使用鼠标滚轮滚动 tmux 缓冲区 - not 终端缓冲区。此设置的另一个副作用是我无法再以通常的方式进行鼠标选择 - 我必须使用鼠标左键按下 Shift

IOW:如何告诉 tmux 将所有鼠标事件传递给终端仿真器?

PPS。 Ubuntu 15.10;侏儒终端;滚动条在右侧清晰可见,但在 screen 下它们表示只显示缓冲区的一小部分,而在 tmux 下它们表示没有任何内容可滚动。

我怀疑你的问题实际上是根本没有将行放在回滚缓冲区中,而不是 tmux 接管了鼠标和键。

Tmux 默认使用 "alternate screen buffer"(您可能会注意到,如果屏幕上有文本,然后附加和分离 tmux,文本将会返回)。许多终端仿真器不会将在此模式下滚动或擦除的文本放在回滚缓冲区中。要禁用此功能,请执行以下操作:

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

其中 xterm* 是您的终端在 $TERM 环境变量中报告的内容。如果以交互方式设置选项,您可能需要分离、重置终端并重新连接才能使其正常工作。

注意:如果您使用 termcap 而不是 terminfo,请使用 tite 而不是 smcup/rmcup