为了允许用鼠标滚动tmux窗格,我在~/.tmux.conf文件中放入了以下内容:

set -g mouse-mode on

然而,什么都没有改变。当我滚动时,它仍然在tmux之外滚动。为什么会这样?


当前回答

正如@Graham42所说,从版本2.1鼠标选项已经重命名,但你可以使用鼠标与任何版本的tmux添加到你的~/.tmux.conf:

Bash shell:

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"

希望这能有所帮助

其他回答

这条线:

set -g mouse-mode on

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

首先,正确的设置不是鼠标模式,而是模式鼠标。

其次,它只适用于较旧版本的tmux(前版本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-mode、mouse-resize-pane、mouse-select-pane和/或mouse-select-window。如果您找到了它们,那么就使用这些选项(用于tmux的旧版本)。

添加这些线条可以让你使用鼠标滚轮,可以让你点击不同的窗格来激活它们,还可以让你通过点击并拖动分隔符来调整窗格的大小。

也可以使用鼠标进行复制粘贴。但是,您可能会注意到,用鼠标复制和粘贴可能不像在控制台上那样正常工作。为了解决这个问题,我注意到在使用鼠标的复制/粘贴能力时按住SHIFT键会使它们重新正常工作。(在MacOS上,fn似乎比SHIFT更适合我。)或者您可以学习tmux的复制粘贴方法(我非常推荐这种方法)。


关于使用tmux的本地复制/选择/粘贴功能的注意事项:

就我个人而言,我觉得vi键对我来说比默认的emacs键更有意义(例如,用vi模式的ENTER退出选择模式比用emacs模式的CTRL+w或ALT+w退出选择模式感觉更自然),所以我在~/.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的选择模式。想要摆脱它,试试下面的方法:

回车。(可能在vi模式下工作。) ALT + w。(可能在emacs模式下工作。) 点击CTRL + w。(可能在emacs模式下工作。) 元+ w。(可能在emacs模式下工作。) Esc。(可能在emacs模式下工作。) 点击q.(可能在vi模式下工作,也可能在emacs模式下工作。)

最后,你可以试着打:

CTRL + w输入

or:

Esc问

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


使用vim鼠标:

我发现把这一行放在~/。vimrc文件:

:set mouse=a

似乎与tmux工作得很好,比这一行更好:

:set mouse=r

我无法解释其中的区别;如果您是vim用户,请试用它们,看看哪种设置最适合您。


如果您需要测试这些tmux选项,您可能会发现自己正在编辑~/.tmux.conf文件,退出tmux,然后重新启动tmux。这可能会成为一个乏味的过程,所以如果你想要一些变通方法,这里有一些选择:

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

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

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

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

Tmux设置选项-g鼠标打开

Tmux set-window-option -g mode-keys

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

CTRL+B:set-option -g鼠标进入

set-window-option -g mode-keys vi输入ENTER键


祝你好运,祝你使用tmux愉快!

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

正如@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

您仍然可以使用魔鬼逻辑设置选项取决于您当前的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或源文件新的.tmux.conf


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

这应该可以工作:

setw -g mode-mouse on

然后资源,然后配置文件

tmux source-file ~/.tmux.conf

或者关闭服务器