tmux set -g mouse-mode on;没有滚动

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

set -g mouse-mode on

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

202970 次浏览

这应该可以工作:

setw -g mode-mouse on

然后资源,然后配置文件

tmux source-file ~/.tmux.conf

或者关闭服务器

给那些现在正失去理智的人一个快速提醒:

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

这就是

:setw -g mouse

因此该选项已在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

正如@Graham42所指出的,鼠标选项在2.1版本中发生了变化。现在滚动需要您首先进入复制模式。为了使滚动几乎与2.1之前相同,在.tmux.conf中添加following。

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

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

上海 (Bourne shell) shell:

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 on

粘贴到~/.tmux.conf

set -g mouse on

在终端上运行

tmux source-file ~/.tmux.conf

你仍然可以使用魔鬼逻辑设置选项取决于你当前的Tmux版本:见我以前的回答

但是自从Tmux v1.7以来,set-option添加了"-q"来屏蔽错误,不打印任何东西(参见更新日志)。 我建议使用这个功能,它更易于阅读和扩展

将这个添加到你的~/.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


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

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

这条线:

set -g mouse-mode on

在你的~/.tmux.conf文件中不能工作。

首先,正确的设置不是mouse-mode,而是mode-mouse

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

第三,从技术上讲,man tmux表示与setw (set-window-option)一起使用mode-mouse选项,而不是与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)。

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

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


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

就我个人而言,我觉得vi键对我来说比默认的emacs键更有意义(例如,用vi模式的输入退出选择模式比用emacs模式的CTRL+wALT+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模式。)
  • 。(可能在vi模式下工作,也可能在emacs模式下工作。)

最后,你可以试着打:

CTRL + w 输入

或者:

Esc

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


使用鼠标vim:

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

:set mouse=a

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

:set mouse=r

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


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

在编辑(并保存)你的~/.tmux.conf文件后,运行这个命令(在tmux中):

__abc1 + __abc2 __abc0 __abc3

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

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

tmux set-option -g mouse on

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

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

__abc1 + __abc2 __abc0 __abc3

__abc1 + __abc2 __abc0 __abc3


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