【问题标题】:tmux set -g mouse-mode on doesn't worktmux set -g mouse-mode on 不起作用
【发布时间】:2012-08-03 15:43:43
【问题描述】:

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

set -g mouse-mode on

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

有人知道这是为什么吗?

【问题讨论】:

  • mode-mouse 在旧版本中

标签: tmux


【解决方案1】:

因此,此选项已在 2.1 版(2015 年 10 月 18 日)中重命名

来自changelog

 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!现在这是正确答案。我更新了 tmux,今天早上它坏了——这修复了它。
  • 尽管这个问题是在 2012 年提出的,但在此更改之前,这只是我(和许多其他人)需要的答案,哈哈
  • 有用,解决我在 Ubuntu 16.04 中的问题
  • 虽然这适用于 Mac,但它与set -g mouse on 一起使用,会破坏在 Mac 终端中选择文本的能力。我必须专门做set -g mouse off 来选择文本
  • @Wins 在选择或粘贴之前按 shift
【解决方案2】:

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

【讨论】:

  • 太棒了!只是将mouse 设置为接受的答案对我不起作用 - 这个进入复制模式的别名是完美的
  • 这似乎可行,但是我不能再在窗格中选择文本了。其他人也有这个问题吗?
  • @will.fiset:是的,正如FAQs 中提到的那样,这是预期的。尝试标记文本时按住shift-key,这应该适用于大多数终端。
【解决方案3】:

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

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

原来如此

 :setw -g mouse

【讨论】:

  • 或者,如果您希望它始终开启,只需在 ~/.tmux.conf 中添加 set -g mouse。虽然请注意,这会使通过鼠标将文本复制/粘贴到终端中变得更加困难(我确信有办法 - 我自己还没有查到)。
  • @J.M.Janzen 如果您在单击时按住 Shift,许多终端会为自己保留鼠标事件。鼠标事件不会传递给 tmux(或 vim,就此而言),文本将由终端本地选择。
【解决方案4】:

这应该可行:

setw -g mode-mouse on

然后是资源然后是配置文件

tmux source-file ~/.tmux.conf

或者杀死服务器

【讨论】:

  • 我使用 set -g mouse on 和你提供的源文件命令,效果很好。
  • .tmux.conf:1: invalid option: mode-mouse
【解决方案5】:

粘贴到 ~/.tmux.conf 中

set -g mouse on

在终端上运行

tmux source-file ~/.tmux.conf

【讨论】:

  • 谢谢,为 byobu --version byobu 版本 5.73 tmux 2.5 工作,而上述建议没有。
  • 谢谢,我尝试了很多东西,但不知道我必须运行tmux source-file ~/.tmux.com
【解决方案6】:

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

希望对你有帮助

【讨论】:

  • 谢谢!我在 git 中有 tmux.conf,并且经常使用旧 tmux 版本的机器...
  • 这个答案背后的想法是纯粹的天才! ...并且还可以帮助style-options resp。 fg-, bg- and attr-abolition in tmux 2.9。但它不起作用,因为至少我的 shell 拒绝比较浮点数......如果您的本地化使用 . 以外的其他东西作为浮点数,您还必须解决这个问题。
  • @DJCrashdummy 你的shell中tmux -V | cut -d ' ' -f2的输出是什么?
  • 注意:在 ubuntu 19.10 上,版本是 tmux 2.9a。所以我使用tmux -V | sed -E 's/tmux ([0-9.]*).*$/\\1/;' 来更健壮地解析它。
  • 注意:至少在 Ubuntu 18.04 上对我来说,即使 /bin/sh 是 Bash,我也需要 Sh 语法,可能是因为 Bash enters POSIX mode
【解决方案7】:

你仍然可以根据你当前的 Tmux 版本使用设置选项的魔鬼逻辑:见我以前的answer

但是从 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


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

【讨论】:

  • 谢谢!它有效!!!
【解决方案8】:

这一行:

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 和/或@987654349 @。如果您找到它们,请使用这些选项(旧版本 tmux 的选项)。

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

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


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

就个人而言,我觉得vi 键对我来说比默认的emacs 键更有意义(例如,使用vi 模式的退出选择模式感觉更自然kbd>ENTER 比 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 的选择模式。要摆脱它,请尝试以下方法之一:

  • 点击 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 文件,退出tmux,然后重新启动tmux。这可能会成为一个乏味的过程,所以如果您想要一些变通方法,这里有一些选项:

选项 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 玩得开心!

【讨论】:

    【解决方案9】:

    试试这个。它可以在我的电脑上运行。

    set -g mouse on
    

    【讨论】:

      【解决方案10】:

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

      【讨论】:

      • ctrl b 后鼠标不做任何事情
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多