305

我一直在环顾四周,人们说

set -g mouse-mode on

应该让您在运行 tmux 时滚动浏览终端输出。但是,在将其放入我的~/.tmux.conf文件并tmux set -g mouse-mode on在 tmux 会话中说之后,没有任何变化。当我滚动时,我仍然在 tmux 之外,就像使用默认设置在 vim 中滚动一样。

有谁知道这是为什么?

4

10 回答 10

675

所以这个选项在 2.1 版(2015 年 10 月 18 日)中被重命名

变更日志

 Mouse-mode has been rewritten.  There's now no longer options for:
    - mouse-resize-pane
    - mouse-select-pane
    - mouse-select-window
    - mode-mouse

  Instead there is just one option:  'mouse' which turns on mouse support

所以这就是我现在在我的.tmux.conf文件中使用的

set -g mouse on
于 2015-10-26T00:14:54.503 回答
80

正如@Graham42 所指出的,鼠标选项在 2.1 版中已更改。现在滚动需要您先进入复制模式。要启用几乎与 2.1 之前相同的滚动,请将以下内容添加到您的.tmux.conf.

set-option -g mouse on

# make scrolling with wheels work
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M

这将启用悬停在窗格上的滚动,您将能够逐行滚动该窗格。

来源:https ://groups.google.com/d/msg/tmux-users/TRwPgEOVqho/Ck_oth_SDgAJ

于 2015-11-01T10:25:20.567 回答
71

只是对现在失去理智的其他人的快速提醒:

https://github.com/tmux/tmux/blob/310f0a960ca64fa3809545badc629c0c166c6cd2/CHANGES#L12

所以这只是

:setw -g mouse
于 2015-10-23T20:02:21.093 回答
39

这应该工作:

setw -g mode-mouse on

然后资源然后配置文件

tmux source-file ~/.tmux.conf

或者杀死服务器

于 2012-08-06T16:28:17.103 回答
27

粘贴到 ~/.tmux.conf

set -g mouse on

并在终端上运行

tmux source-file ~/.tmux.conf
于 2018-06-24T18:24:47.663 回答
16

正如@Graham42 所说,从 2.1 版开始,鼠标选项已重命名,但您可以将鼠标与任何版本的 tmux 一起使用,并将其添加到您的 ~/.tmux.conf 中:

Bash贝壳:

is_pre_2_1="[[ $(tmux -V | cut -d' ' -f2) < 2.1 ]] && echo true || echo false"
if-shell "$is_pre_2_1" "setw -g mode-mouse on; set -g mouse-resize-pane on;\
      set -g mouse-select-pane on; set -g mouse-select-window on" "set -g mouse on"

Sh(伯恩壳)壳:

is_pre_2_1="tmux -V | cut -d' ' -f2 | awk '{print ($0 < 2.1) ? "true" : "false"}'"
if-shell "$is_pre_2_1" "setw -g mode-mouse on; set -g mouse-resize-pane on;\
      set -g mouse-select-pane on; set -g mouse-select-window on" "set -g mouse on"

希望这可以帮助

于 2017-02-19T20:47:43.077 回答
10

您仍然可以根据您当前的 Tmux 版本使用设置选项的魔鬼逻辑:请参阅我以前的答案

但是从 Tmux v1.7 开始,set-option添加了“-q”以消除错误并且不打印任何内容(请参阅changelog)。我推荐使用这个特性,它更具可读性和易于扩展。

将此添加到您的~/.tmux.conf

# from v2.1
set -gq mouse on
# before v2.1
set -gq mode-mouse on
set -gq mouse-resize-pane on
set -gq mouse-select-pane on
set -gq mouse-select-window on

重新启动 tmux 或source-file你的新.tmux.conf


旁注:如果人们更喜欢这个答案,我愿意删除我的旧答案

于 2020-05-21T15:28:11.097 回答
7

这一行:

set -g mouse-mode on

在您的~/.tmux.conf文件中将不起作用。

一方面,正确的设置是mode-mouse(不是mouse-mode)。

其次,它仅适用于旧版本tmux(pre-version 2;您可以运行tmux -V以查看您拥有的版本,但您也可以运行man tmux以查看是否mode-mouse受支持的选项)。

第三,从技术上讲man tmux,该mode-mouse选项与setw( set-window-option) 一起使用,而不与set( set-option) 一起使用,尽管我已经看到它与set(以及setw) 一起使用。


这些行应该有效:

如果您的版本tmux足够新(也就是说,如果tmux -V显示版本 2 或更新版本),您可以将这一行放入您的~/.tmux.conf文件中:

set-option -g mouse on

但是,如果您使用旧版本的tmux,请将这些行放入您的~/.tmux.conf文件中:

set-window-option -g mode-mouse on

set-option -g mouse-resize-pane on
set-option -g mouse-select-pane on
set-option -g mouse-select-window on

同样,如果您不确定要在~/.tmux.conf文件中放入哪一行,请运行man tmux并搜索mouse-modemouse-resize-panemouse-select-pane和/或mouse-select-window。如果您找到它们,请使用这些选项(旧版本的选项tmux)。

将这些行放入将允许您使用鼠标滚轮,它将允许您单击各种窗格以激活它们,并且它允许您通过单击并拖动它们的拆分器分隔符来调整窗格的大小。

您也可以使用鼠标进行复制和粘贴。但是,您可能会注意到,使用鼠标进行复制和粘贴可能不像在控制台上通常那样工作。为了解决这个问题,我注意到SHIFT在使用鼠标的复制/粘贴功能时按住键会使它们再次正常工作。或者你可以学习tmux复制粘贴的方法(我推荐)。


关于使用tmux的本机复制/选择/粘贴功能的说明:

就个人而言,我觉得这些vi键对我来说比默认键更有意义emacs(例如,使用模式退出选择模式比使用模式 + 或 + 更自然),所以我的文件中有这个:viENTERemacsCTRLwALTw~/.tmux.conf

# For vi-like keys in copy/paste/selection mode:
set-window-option -g mode-keys vi

但是,我注意到在旧版本上tmux,此行将不起作用,除非包含以下行:

set-window-option -g mode-mouse on

很高兴知道: 有时,当您使用鼠标的滚轮时,您会发现您的窗格/屏幕似乎被冻结或锁定(它不会响应键盘输入),并且不清楚该怎么做解锁它。

它没有上锁。您很可能处于tmux的选择模式。要摆脱它,请尝试以下方法之一:

  • ENTER。(可能会在vi模式下工作。)
  • 点击ALT+ w。(可能会在emacs模式下工作。)
  • 点击CTRL+ w。(可能会在emacs模式下工作。)
  • 点击META+ w。(可能会在emacs模式下工作。)
  • Esc。(可能会在emacs模式下工作。)
  • q。(可能会在vi模式下工作,也可能在emacs模式下工作。)

最终,您可以尝试点击:

CTRL+w     ENTER

或者:

Esc     q

很有可能,这将使您回到键盘再次响应的正常模式。


使用鼠标vim

我发现将这一行放在我的~/.vimrc文件中:

:set mouse=a

似乎与tmux, 比这行更好:

:set mouse=r

我无法真正解释其中的区别。如果您是vim用户,请尝试一下,看看哪种设置最适合您。


如果您需要测试这些tmux选项,您可能会发现自己正在编辑文件、~/.tmux.conf退出. 这可能会成为一个乏味的过程,因此如果您想要一些变通方法,这里有一些选项:tmuxtmux

选项 1: 编辑(并保存)~/.tmux.conf文件后,运行以下命令(在 中tmux):

CTRL+B :source-file ~/.tmux.conf ENTER

这将立即将~/.tmux.conf文件中的新设置应用到当前tmux会话中,而无需重新启动tmux.

选项 2: 如果您在tmux会话中,您可以通过在 Unix shell 提示符下运行以下命令来临时打开/关闭该会话的选项:

tmux set-option -g mouse on

tmux set-window-option -g mode-keys vi

选项 3:tmux您还可以在会话 中临时打开/关闭选项:

CTRL+B :set-option -g mouse on ENTER

CTRL+B :set-window-option -g mode-keys vi ENTER


祝你好运,玩得开心tmux

于 2021-11-04T15:28:53.917 回答
1

试试这个。它适用于我的电脑。

set -g mouse on
于 2018-05-01T13:48:08.130 回答
-1

Ctrl+B然后设置鼠标。-g不再需要。

于 2021-03-05T10:10:05.717 回答