在 tmux 中使用鼠标滚动 shell 输出

在 tmux 中使用鼠标滚动 shell 输出

鼠标滚动不起作用tmux当我运行没有 tmux 的 shell 时(在 Gnome 终端中),它的工作方式是这样的。似乎 tmux 发送鼠标滚动事件,就像我按下了向上/向下键一样。但我希望它在 shell 中滚动输出历史。有没有办法让 tmux 像这样工作?

笔记:我知道如何使用键盘滚动(感谢另一个问题这里)。

我尝试在两个版本的 tmux 中使用鼠标滚动:

答案1

要在输出历史记录内滚动,您可以使用^b+[ 然后可以使用 M+V 向上翻页,使用 ^V 向下翻页。我不知道您是否可以使用真正的PgUpand PgDown。我的终端不会将这些键发送到 tmux。相反,它会自行滚动,而不是 tmux 历史记录。

要退出复制模式,请按 ESC

要在此模式(称为复制模式)下使用鼠标,请按^b+: 并输入以下内容:

setw -g mouse on

注意:在 tmux <2.1 中,该选项名为mode-mouse,而不是mouse

现在,当您切换到复制模式时,您可以使用鼠标滚动浏览它。如果您愿意,您可以将此命令放入 ~/.tmux.conf 中,这样每次运行 tmux 时它都会加载。

更新:从 tmux 1.5 开始,此选项使使用滚轮自动切换到复制模式并向后滚动 tmux 回滚缓冲区。不再需要先按Ctrl-B+ [。向下滚动回到提示符也会自动结束复制模式。

答案2

Tmux 2.1 有一些变化

  • 鼠标模式已重写。现在不再有以下选项:

    • 鼠标调整窗格大小
    • 鼠标选择窗格
    • 鼠标选择窗口
    • 模式鼠标

    相反,只有一个选项:“鼠标”,它可以完全启用鼠标支持。

那将是

set -g mouse on
# to enable mouse scroll, see https://github.com/tmux/tmux/issues/145#issuecomment-150736967
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

答案3

当前版本的 tmux(1.5)允许您简单地设置模式鼠标选项,并允许您使用鼠标滚轮滚动。

         mode-mouse [on | off]
                 Mouse state in modes.  If on, the mouse may be used to
                 enter copy mode and copy a selection by dragging, to
                 enter copy mode and scroll with the mouse wheel, or to
                 select an option in choice mode.

在我的.tmux.conf中:

set-window-option -g mode-mouse on

更新- 从 tmux 2.1 开始,此选项已重命名为mouse

答案4

有人(来自我丢失的来源)建议将以下内容添加至~.tmux.conf

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

我不知道它是如何工作的,也不知道它能做什么,但现在我可以在 tmux 会话中使用鼠标滚轮滚动,而无需进入 tmux 的复制模式;我只需滚动滚轮,BAM!它就可以工作了。请注意,我使用的是 terminal.app,但我记得 OP 给出了专门用于 的答案gnome-terminal

相关内容