【问题标题】:Mouse scrolling and selection in terminal with tmux使用 tmux 在终端中进行鼠标滚动和选择
【发布时间】:2016-01-28 16:17:39
【问题描述】:

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

这对我来说是一个主要的转折点。如何使用 tmux 进行 终端 滚动?

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

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

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

【问题讨论】:

  • 你的终端模拟器是什么?我怀疑问题是由于存在滚动区域(本身是由于 tmux 的永远在线状态栏),或者可能由于 smcup/rmcup,您的终端仿真器没有滚动-完全脱离历史记录,而不是 tmux 接管鼠标(如果它们以前工作过,它不可能接管 shift-pgup/pgdn)。例如,我可以很好地滚动,但它只显示我附加 tmux 之前的内容。
  • @Random832:见 PPS。 screen 也有一个永远在线的状态,但它允许滚动。
  • 我不使用屏幕,所以无法评论它的不同之处,但我测试了在我的机器上禁用 smcup/rmcup,它似乎可以修复它。
  • 在使用 screen 多年后,我正在尝试 tmux 2.6。我也有同样的问题。 superuser.com/questions/209437/how-do-i-scroll-in-tmux 或 superuser.com/questions/310251/… 这里的解决方案都不起作用。

标签: terminal tmux gnu-screen


【解决方案1】:

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

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

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

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

注意:如果您使用 termcap 而不是 terminfo,请使用 ti 和 te 而不是 smcup/rmcup。

【讨论】:

  • 我发现您的设置没有改变行为。
  • @sds 您是否尝试将其添加到 tmux.conf,然后在新终端中启动一个新的 tmux 实例,以防某些东西没有正确重置? $TERM 的价值是多少?你关闭了mode-mouse 吗?
  • 是的,这正是我所做的;我的TERM 是xterm-256color。
  • @sds 您如何生成要滚动的内容?我不知道如何进一步调查;这个解决方案对我有用。
  • cat /var/log/messages
猜你喜欢
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
相关资源
最近更新 更多