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

时间:2013-07-03 10:04:42

标签: terminal gnu-screen tmux

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

  1. 用鼠标选择文字,按住左键
  2. 使用中键粘贴文字
  3. 我升级了我的操作系统,这已经获得了一个新的tmux版本。我没有更改我的.tmux.conf配置文件。

    这就是我要对当前版本的tmux1.6(预先打包在最新的crunchbang linux中)所做的事情:

    1. 用鼠标选择文字,按住左键 shift
    2. 使用中键粘贴文字
    3. 终端被阻止,一个小小的信息区域显示当前窗格右上方的一些数字(即[0/24],可能与粘贴了多少个字符有关),这对我来说意义不大不需要/想要(编辑:似乎在这里自动输入copy-mode
    4. 我必须按 q 键再次获得功能终端。
    5. 对于我每天做几十次的事情来说,这太麻烦了。如何让旧机制再次运作?

13 个答案:

答案 0 :(得分:202)

  1. 复制文字:选择文字,然后按left-button键同时按下鼠标shift
  2. 使用shift键+ middle-button
  3. 粘贴文字

答案 1 :(得分:63)

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

prefix : set -g mouse off

其中prefix是tmux访问密钥(默认情况下, Ctrl + B 除非您重新映射它)。 启动命令模式,set -g全局设置参数。

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

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


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

prefix : set -g mode-mouse off

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

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

答案 2 :(得分:27)

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

在Mac上,按" fn"按钮,然后用鼠标右键单击或键盘cmd + c选择文本和副本。

答案 3 :(得分: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;"

答案 4 :(得分:6)

我在让Christian的榜样为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; \
    "

答案 5 :(得分:4)

here修改 - 我在原文中使用xclip代替xsel

bind -T root MouseDown2Pane run -b "xclip -o | tmux load-buffer - && tmux paste-buffer -s ' '"

这在tmux 2.5-rc2

中为我欢快地工作

答案 6 :(得分:4)

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

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

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

答案 7 :(得分:2)

这是Kaixuan's answer的修改版本,与Tmux 2.1兼容。

`bind m run "if [[ `tmux show-options -w | grep mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mouse \$toggle &> /dev/null;`"

所有mode-mouse选项已合并为一个mouse选项,show-option必须替换为show-options

答案 8 :(得分:0)

~/.tmux.conf中:

set -g mouse off

具有bind r source-file ~/.tmux.conf可能也很有用,因此您可以执行ctrl-d r重新加载配置。

答案 9 :(得分:0)

Yves Blusseau帮助我弄清楚了它是如何工作的,但是在我的计算机上(运行 Windows 10 ),其行为却有所不同。

tmux 2.6

使用激活的鼠标(:set -g mouse on

复制

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

粘贴

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

就这么简单。 享受吧!

答案 10 :(得分:0)

根据此处发布的其他答案,我创建了一个简洁的解决方案,该解决方案可与(至少) tmux 2.8 tmux 3.1 一起使用

您可以通过按tmux mouse support-prefix来打开和关闭M。在.tmux.conf文件中,包括以下行:

bind-key -T prefix m run "m=$(tmux show -g mou|grep -q on;echo $?);tmux set -g mou $m;tmux display mouse:\$m"

启用后将显示mouse: 1,禁用时将显示mouse: 0。反复按prefix-M将在 on off 之间切换鼠标模式。

另请参阅:tmux mouse support

编辑::如果看到命令returned 1错误消息,则您将需要使用以下内容代替 tmux 3.1 tmux 3.2 < / strong>:

bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'

(此解决方案先前已提及)

答案 11 :(得分:0)

这是鼠标切换的更新版本,已在tmux v3.1上进行了测试

由于代码是单行代码,因此为了简短起见,我仅将t用作变量名,然后将if语句替换为条件查找字母n的条件。 有条件的条件使我们可以减少很多空格和分号,从而进一步缩短了行距。

bind m run "[[ `tmux show -gv mou` = *n* ]]&&t=off||t=on;tmux set -g mou \$t;tmux display-message \"mouse mode: \$t\""

这是将代码段扩展为更具可读性的形式

[[ `tmux show -gv mouse` = *n* ]] && t=off || t=on
tmux set -g mouse $t
tmux display-message "mouse mode: $t"

答案 12 :(得分:-1)

我使用以下绑定在按下鼠标左键的情况下选择文本-

bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "/mnt/c/Windows/System32/clip.exe"