使用鼠标在tmux中恢复旧的复制粘贴行为

dan*_*ast 102 terminal gnu-screen tmux

这就是我以前在tmux中复制粘贴所做的事情(使用鼠标,键盘的工作方式不同,这不是我感兴趣的):

  1. 用鼠标选择文本,按下左键
  2. 使用中键粘贴文本

我升级了我的操作系统,这已经获得了一个新的tmux版本.我没有更改.tmux.conf配置文件.

这是我对目前的版本做tmux,1.6(其中来自预包装在最新的Linux crunchbang):

  1. 用鼠标,按住左键 shift键选择文本
  2. 使用中键粘贴文本
  3. 终端被阻止,一个小小的信息区域显示当前窗格右上角的一些数字(即[0/24],可能与粘贴了多少个字符有关),这对我来说意义不大,我不需要/想要(编辑:它似乎copy-mode在这里自动输入)
  4. 我必须q按键才能再次获得功能终端.

对于我每天做几十次的事情来说,这太麻烦了.如何让旧机制再次运作?

Yve*_*eau 219

  1. 复制文本:选择文本,然后按鼠标left-buttonshift按键了.
  2. 使用shift键+ 粘贴文本middle-button

  • 对于OSX用户来说,它是选项密钥,如本博文中所述:http://awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse/ (27认同)
  • OP清楚地表明他们希望能够使用鼠标进行复制和粘贴,而无需使用键盘.按"Shift"(或OSX上的选项键)是本书中最古老的技巧,适用于大多数模拟器,但不回答原始问题. (6认同)
  • 事实上,在使用Shift + LMB选择文本后,您可以使用OS功能(在我的情况下为Ctrl-Shift-C)复制到非X11剪贴板. (2认同)
  • @pangratz 使用选项键可能适用于 iTerm 用户,但不适用于本机终端用户。 (2认同)

dr-*_*jan 71

要恢复默认的复制/粘贴配置,您需要(至少暂时)关闭tmux中的鼠标支持:

prefix : set -g mouse off
Run Code Online (Sandbox Code Playgroud)

prefixtmux访问键在哪里(默认情况下为Ctrl+ B,除非您重新映射它).:启动命令模式并set -g全局设置参数.

关闭鼠标模式后,操作系统提供的标准复制/粘贴功能将按预期工作.

您可能想要做的其他事情是"最大化"当前窗格,这样您就可以轻松复制多行.


如果您正在使用旧版(2.1之前版本)的tmux,则需要使用以下内容:

prefix : set -g mode-mouse off
Run Code Online (Sandbox Code Playgroud)

有更多的细节和一些方便的键绑定来自动化所有这些:

http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

上面链接的文章的主要内容是.tmux.conf的摘录:

# disable mouse control by default - change 'off' to 'on' to enable by default.
setw -g mode-mouse off
set-option -g mouse-resize-pane off
set-option -g mouse-select-pane off
set-option -g mouse-select-window off
# toggle mouse mode to allow mouse copy/paste
# set mouse on with prefix m
bind m \
    set -g mode-mouse on \;\
    set -g mouse-resize-pane on \;\
    set -g mouse-select-pane on \;\
    set -g mouse-select-window on \;\
    display 'Mouse: ON'
# set mouse off with prefix M
bind M \
    set -g mode-mouse off \;\
    set -g mouse-resize-pane off \;\
    set -g mouse-select-pane off \;\
    set -g mouse-select-window off \;\
    display 'Mouse: OFF'
# zoom this pane to full screen
bind + \
    new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
    swap-pane -s tmux-zoom.0 \;\
    select-window -t tmux-zoom
# restore this pane
bind - \
    last-window \;\
    swap-pane -s tmux-zoom.0 \;\
    kill-window -t tmux-zoom
Run Code Online (Sandbox Code Playgroud)

  • 但是,鼠标模式有其好处:它让我滚动.是否有一组设置可以让我像普通的终端一样使用我的终端?包括复制/粘贴和滚动? (35认同)
  • 如果您有tmux 1.8或更新版本,则会有一个内置命令Control-B z,它将切换当前窗格的缩放状态.所以CB z将这个窗格缩放到全屏,同样的命令再次恢复.这消除了在上述配置结束时定义CB +和CB-键序列的需要. (13认同)
  • 如果你有tmux 2.1或更新,所有与鼠标相关的命令都已经过时,取而代之的是设置所有内容的'mouse'.因此,要默认禁用鼠标模式,请使用'setw -g mouse off'.删除对"mode-mouse","mouse-resize-pane","mouse-select-pane"或"mouse-select-window"的所有引用. (8认同)
  • 使用 tmux v3 进行测试,通过一个绑定来打开和关闭它:`bind-key -T prefix m set -g mouse\; 显示'鼠标:#{?mouse,ON,OFF}'` (3认同)

flu*_*der 33

如果"set -g mode-mouse on"你可以做到这一点:

在Mac上,按"fn"按钮,然后选择文本并用鼠标右键单击或键盘cmd + c复制.

  • 对我来说,这似乎只有在我不用鼠标滚动时才有效.一旦我用鼠标滚动,这不再有效 (3认同)

win*_*rrr 16

tmux 2.6+

需要激活鼠标才能使其工作,因此请执行以下操作:Ctrl+B然后键入:set -g mouse on。(或者更好:在您的设置中设置此设置tmux.conf以保持一致性。)

视窗 10

激活鼠标模式后,在 Windows 上您需要按下Shift,如下所述。

复制

  1. 按住Shift并用鼠标选择要复制的文本。
  2. 现在右键单击以复制所选文本(不按住Shift)。

边缘情况:水平分割的窗格

当使用水平分割的窗格时,选择部分并不容易,因为多行的选择也跨越多个窗格,选择您不想选择的文本部分。为了避免选择离开当前窗格,Ctrl同时按下Shift(感谢@Franck)。

另一种解决方法是快速更改窗格的布局(例如使用Ctrl+B然后使用Space),然后再将其更改回来。

粘贴

  1. 按住Shift并右键单击以插入复制的文本。

就那么简单。享受!

苹果系统

激活鼠标模式后,在 macOS 上,您需要按fn。要复制选择,请照常使用CMD+ C


小智 6

使用<prefix>+m打开或关闭鼠标模式

bind m run "if [[ `tmux show-option -w | grep mode-mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mode-mouse \$toggle &> /dev/null; for cmd in mouse-select-pane mouse-resize-pane mouse-select-window; do tmux set-option -g \$cmd \$toggle &> /dev/null; done;"
Run Code Online (Sandbox Code Playgroud)

  • 我用`bind m set-option mouse \; display-message“鼠标现在是#{?mouse,on,off}”“ (2认同)

Nei*_*ill 6

我想让克里斯蒂安的榜样为Tmux 2工作时遇到问题,我认为有些错字。我完成了以下工作,阅读起来更容易一些,并且设置了全局和窗口模式。给某人。新用户和tmux很棒!

bind m run "\
    tmux show-options -g | grep -q "mouse\\s*on"; \
    if [ \$? = 0 ]; \
    then  \
        toggle=off;  \
    else  \
        toggle=on;  \
    fi;  \
    tmux display-message \"mouse is now: \$toggle\";  \
    tmux set-option -w mouse \$toggle; \
    tmux set-option -g mouse \$toggle; \
    "
Run Code Online (Sandbox Code Playgroud)

  • 为了完成这项工作,我不得不将`show-options`行更改为`tmux show-options -g |。grep -q“鼠标\\ s * on”; \`。这是因为正则表达式“ mouse。* on”与“ @ scroll-in-moused-over-pane“ on”相匹配,后者是插件的一部分* nhdaly / tmux-better-mouse-mode * (2认同)

Uma*_*kar 6

对于Mac + iTerm2 + tmux(版本> 2.1)的用户

确保在tmux配置中设置了鼠标模式(只需set -g mode-mouse on在〜/ .tmux.conf中添加)。现在,要在窗格内复制文本:

  1. 按下option + command并选择要使用鼠标光标复制的文本。这就像裁剪照片。
  2. 所选文字将自动复制(无需复制command + c)。只需按常规方法粘贴即可。


And*_*ndy 5

这里修改-我用的xclip不是xsel原来的:

bind -T root MouseDown2Pane run -b "xclip -o | tmux load-buffer - && tmux paste-buffer -s ' '"
Run Code Online (Sandbox Code Playgroud)

这对我来说很愉快 tmux 2.5-rc2