我可以使用双击选择并复制到tmux吗?

时间:2015-07-14 10:31:24

标签: tmux

我正在学习使用tmux,我发现当我在tmux窗口中时,双击选择并复制功能不再起作用。

我可以使用双击选择和复制,就像在iterm2中一样吗?

我用谷歌搜索了一段时间,但没有找到一个简短而明确的答案。我已经在tmux配置文件中添加了setw -g mode-mouse on

5 个答案:

答案 0 :(得分:18)

不知道iterm2,但这可以在tmux 2.6中实现(在Linux上测试,最后一个命令使用X11 xclip)

添加了三击以选择并复制一行。

# Double LMB Select & Copy (Word)
bind-key -T copy-mode-vi DoubleClick1Pane \
    select-pane \; \
    send-keys -X select-word \; \
    send-keys -X copy-pipe "xclip -in -sel primary"
bind-key -n DoubleClick1Pane \
    select-pane \; \
    copy-mode -M \; \
    send-keys -X select-word \; \
    send-keys -X copy-pipe "xclip -in -sel primary"

# Triple LMB Select & Copy (Line)
bind-key -T copy-mode-vi TripleClick1Pane \
    select-pane \; \
    send-keys -X select-line \; \
    send-keys -X copy-pipe "xclip -in -sel primary"
bind-key -n TripleClick1Pane \
    select-pane \; \
    copy-mode -M \; \
    send-keys -X select-line \; \
    send-keys -X copy-pipe "xclip -in -sel primary"

如果您不使用copy-mode-vi,请将其替换为copy-mode

答案 1 :(得分:2)

我想出了一种复制粘贴机制,该机制与从终端获得的期望类似

我使用以下设置能够:

  1. 通过鼠标双击操作选择一个单词
  2. 使用鼠标三连击操作选择一条线
  3. 通过鼠标拖放操作选择局部线

此解决方案将使选择保持突出显示并将选择输出复制到剪贴板缓冲区(主缓冲区和剪贴板)

当您按下“ Enter”键时,您退出并返回外壳程序

这里的优点是,您可以将鼠标中键同时用作tmux之外的shift-insert组合来粘贴内容,而仍保持选中状态。

另外,当您退出外壳时,可以使用鼠标中键或按shift-insert粘贴内容

正常终端环境中的所有期望结果

    # Enable mouse control
    setw -g mouse on

    unbind -T copy-mode-vi Enter
    bind-key -T copy-mode-vi Enter \
        send -X cancel

    # Drag and Drop Aelect & Copy (Selection)
    bind-key -T copy-mode-vi MouseDragEnd1Pane \
        send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
        send-keys -X no-clear

    # Double LMB Select & Copy (Word)
    bind-key -T copy-mode-vi DoubleClick1Pane \
        select-pane \; \
        send-keys -X select-word \; \
        send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
        send-keys -X no-clear
    bind-key -n DoubleClick1Pane \
        select-pane \; \
        copy-mode -M \; \
        send-keys -X select-word \; \
        send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
        send-keys -X no-clear

    # Triple LMB Select & Copy (Line)
    bind-key -T copy-mode-vi TripleClick1Pane \
        select-pane \; \
        send-keys -X select-line \; \
        send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
        send-keys -X no-clear
    bind-key -n TripleClick1Pane \
        select-pane \; \
        copy-mode -M \; \
        send-keys -X select-line \; \
        send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
        send-keys -X no-clear

    # Middle click to paste from the primary buffer
    unbind-key MouseDown2Pane
    bind-key -n MouseDown2Pane run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"

    # Shift insert to paste from the clipboard
    unbind-key S-IC
    bind-key S-IC run "tmux set-buffer \"$(xclip -o -sel c)\"; tmux paste-buffer"
  • 注意1:为了使其在ssh会话中正常工作:-X必须作为ssh的选项提供
  • 注意2:我正在使用tmux 2.8版

答案 2 :(得分:0)

Alacrity中,按住Shift可以像没有tmux一样进行复制。

source

答案 3 :(得分:0)

以@ ideasman42的答案为基础。这是使用tmux 2.8和pbcopy来制作macos莫哈韦沙漠

# Double LMB Select & Copy (Word)
bind-key -n DoubleClick1Pane \
    select-pane \; \
    copy-mode -M \; \
    send-keys -X select-word \; \
    run-shell "sleep .5s" \; \
    send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -n DoubleClick1Pane \
    select-pane \; \
    copy-mode -M \; \
    send-keys -X select-word \; \
    run-shell "sleep .5s" \;
    send-keys -X copy-pipe-and-cancel "pbcopy

我的版本简短地选择了单词,将其复制到系统缓冲区,然后取消复制模式。

答案 4 :(得分:0)

Kitty / Alacritty 中,我们在按住Shift的同时双击文本块。并且复制在本机以及在tmux中都可以正常工作。