tmux set -g mouse-mode on不起作用

Dav*_*ica 221 tmux

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

set -g mouse-mode on
Run Code Online (Sandbox Code Playgroud)

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

有谁知道这是为什么?

Gra*_*ham 519

所以此选项已在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
Run Code Online (Sandbox Code Playgroud)

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

set -g mouse on
Run Code Online (Sandbox Code Playgroud)

  • 即使这个问题在2012年之前被问到这个变化,这只是我(和许多其他人)需要的答案,哈哈 (6认同)
  • 虽然这适用于 Mac,但它使用“set -g mouse on”,它将破坏在 Mac 终端中选择文本的能力。我必须专门做`set -g mouse off`来选择文本 (4认同)
  • @Wins 在选择或粘贴之前按 shift (4认同)
  • 有用,修复我在Ubuntu 16.04中的问题 (2认同)

Umu*_*rin 69

正如@ 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
Run Code Online (Sandbox Code Playgroud)

这将允许在窗格上滚动滚动,您将能够逐行滚动该窗格.

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

  • 太棒了!仅将`mouse`设置为可接受的答案对我来说不起作用-进入复制模式的别名是完美的 (2认同)
  • 这似乎有效,但是我无法再在窗格中选择文本。其他人也有这个问题吗? (2认同)

小智 56

只是快速向正在失去理智的其他人提出挑战:

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

所以这就是

 :setw -g mouse
Run Code Online (Sandbox Code Playgroud)

  • 或者,如果您希望它始终打开,只需在“~/.tmux.conf”中添加“set -g mouse”即可。但请注意,这将使通过鼠标将文本复制/粘贴到终端变得更加困难(我确信有一种方法 - 我只是没有自己查找)。 (4认同)
  • @JMJanzen 如果您在单击时按住 Shift 键,许多终端都会保留鼠标事件。鼠标事件不会传递到 tmux(或 vim),文本将由终端本地选择。 (2认同)

loc*_*jay 30

这应该工作:

setw -g mode-mouse on
Run Code Online (Sandbox Code Playgroud)

然后资源然后配置文件

tmux source-file ~/.tmux.conf
Run Code Online (Sandbox Code Playgroud)

或杀死服务器


J-L*_*J-L 18

这行:

\n
set -g mouse-mode on\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

一方面,正确的设置是mode-mouse,而不是mouse-mode

\n

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

\n

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

\n
\n

这些行应该有效:

\n

如果您的版本tmux足够新(即,如果tmux -V显示版本 2 或更高版本),您可以将此行放入您的~/.tmux.conf文件中:

\n
set-option -g mouse on\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
set-window-option -g mode-mouse on\n\nset-option -g mouse-resize-pane on\nset-option -g mouse-select-pane on\nset-option -g mouse-select-window on\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

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

\n
\n

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

\n

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

\n
# For vi-like keys in copy/paste/selection mode:\nset-window-option -g mode-keys vi\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
set-window-option -g mode-mouse on\n
Run Code Online (Sandbox Code Playgroud)\n
\n

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

\n

它没有被锁起来。你很可能在tmux选择模式。要摆脱它,请尝试以下方法之一:

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

最后,您可以尝试点击:

\n

CTRL+ w\xc2\xa0 \xc2\xa0ENTER

\n

或者:

\n

Esc\xc2\xa0 \xc2\xa0q

\n

有可能,这会让您回到正常模式,键盘再次响应。

\n
\n

使用鼠标vim

\n

我发现将此行放入我的~/.vimrc文件中:

\n
:set mouse=a\n
Run Code Online (Sandbox Code Playgroud)\n

似乎与 配合得很好tmux,比这条线更好:

\n
:set mouse=r\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
\n

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

\n

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

\n

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

\n

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

\n

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

\n

tmux set-option -g mouse on

\n

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

\n

选项 3: 您还可以通过以下方式临时打开/关闭tmux会话中的选项:

\n

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

\n

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

\n
\n

祝你好运,并享受使用的乐趣tmux

\n


Ale*_*sco 15

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

is_older=$([[ $(tmux -V | cut -d' ' -f2) < 2.1 ]] && echo true || echo false)
if-shell "$is_older" "set -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"
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

  • 注意:在 ubuntu 19.10 上,版本为 tmux 2.9a。所以我使用了`tmux -V | sed -E 's/tmux ([0-9.]*).*$/\\1/;'` 更稳健地解析它。 (2认同)
  • 注意:至少对于 Ubuntu 18.04 上的我来说,即使 `/bin/sh` 是 Bash,我也需要 **Sh** 语法,可能是因为 [Bash 进入 POSIX 模式](https://www.gnu.org /software/bash/manual/html_node/Bash-Startup-Files.html#Bash-Startup-Files) (2认同)

小智 14

粘贴在〜/ .tmux.conf中

set -g mouse on
Run Code Online (Sandbox Code Playgroud)

并在终端上运行

tmux source-file ~/.tmux.conf
Run Code Online (Sandbox Code Playgroud)


Ale*_*sco 5

根据您当前的 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
Run Code Online (Sandbox Code Playgroud)

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


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