Tmux

將選擇複製到 tmux 中的剪貼板

  • May 26, 2021

如果我在 macOS 上的 iTerm2 中用滑鼠在 tmux 中選擇文本,我會將所選文本複製到我的剪貼板中。我不必點擊任何額外的按鈕 - 只需選擇所需的文本即可。

我已經在 macOS 上的 terminal.app 中測試了 tmux,但它在那裡不起作用 - 我必須點擊y才能將選擇複製到我的剪貼板。

我認為有一個滑鼠綁定(MouseOnSelection類似於MouseDown1Pane),但我在網路上找不到任何有用的東西,並且man tmux.

我想知道是否有辦法在 Ubuntu 16.10 上具有類似的行為 - 最好是在 Gnome 終端中。

Tmux 2.4+ 與 vi 複製模式綁定和xclip

set-option -g mouse on
set-option -s set-clipboard off
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"

對於較舊的 tmux 版本、emacs 複製模式綁定(預設)或非 X 平台(即沒有 xclip),請參閱下面的說明。


說明:首先我們需要啟用滑鼠選項,以便 tmux 將擷取滑鼠並讓我們綁定滑鼠事件:

set-option -g mouse on

Gnome-terminal 不支持使用 xterm 轉義序列設置剪貼板,因此我們應該確保該set-clipboard選項處於關閉狀態:

set-option -s set-clipboard off

預設情況下,iTerm2 上可能支持並啟用此選項(請參閱set-clipboardtmux 手冊),這將解釋那裡的行為。

然後,我們可以將複製模式MouseDragEnd1Pane“鍵”(即在窗格中點擊並拖動後釋放第一個滑鼠按鈕時)綁定到一個 tmux 命令,該命令採用目前的複制模式選擇(由 的預設綁定進行MouseDrag1Pane)並管道它到 shell 命令。這個 tmux 命令copy-pipe在 tmux 2.4 之前,並且已經更改send-keys -X copy-pipe[-and-cancel]. 至於 shell 命令,我們只需要一些東西來將系統剪貼板的內容設置為通過管道傳送給它的任何內容;xclip 用於在以下命令中執行此操作。"xclip -selection clipboard -i"以下在非 X 平台上的一些等效替換是"wl-copy"(Wayland)、"pbcopy"(macOS)、"clip.exe"(Windows、WSL) 和"cat /dev/clipboard"(Cygwin、MinGW)。

Tmux 2.4+:

# For vi copy mode bindings
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"

Tmux 2.2 到 2.4:

# For vi copy mode bindings
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"

在 tmux 2.2 之前:

滑鼠拖動後複製支持最初是在 Tmux 1.3 中通過將新mode-mouse選項設置為on. Tmux 2.1 將滑鼠支持更改為熟悉的滑鼠鍵綁定,但沒有DragEnd綁定,這是在 2.2 中引入的。因此,在 2.2 之前,我相信在滑鼠拖動時設置系統剪貼板的唯一方法是通過內置使用 xterm 轉義序列(set-clipboard選項)。這意味著必須至少更新到 tmux 2.2 才能獲得不支持的終端的拖放行為set-clipboard,例如 GNOME 終端。

引用自:https://unix.stackexchange.com/questions/348913