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 -se c -i"
Для более старых версий tmux, привязок режима копирования emacs (по умолчанию) или не-X платформ (т.е. без xclip), смотрите объяснение ниже.
Объяснение: Сначала нам нужно включить параметр мыши, чтобы tmux захватил мышь и связал события мыши:
set-option -g mouse on
Gnome-терминал не поддерживает установку буфера обмена с помощью escape-последовательностей xterm, поэтому мы должны убедиться, что set-clipboard
опция отключена:
set-option -s set-clipboard off
Эта опция может поддерживаться и включаться по умолчанию на iTerm2 (см. set-clipboard
Руководство tmux), что объясняет поведение там.
Затем мы можем связать MouseDragEnd1Pane
«ключ» режима копирования , т. Е. Когда первая кнопка мыши отпущена после нажатия и перетаскивания на панели, к команде tmux, которая принимает текущий выбор режима копирования (сделанный привязкой по умолчанию для MouseDrag1Pane
) и передает его по конвейеру. к команде оболочки. Эта команда tmux была copy-pipe
до tmux 2.4 и с тех пор изменилась на send-keys -X copy-pipe[-and-cancel]
. Что касается команды оболочки, нам просто нужно что-то, что установит содержимое системного буфера обмена на то, что ему передано; 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 я полагаю, что единственный способ установки системного буфера обмена при перетаскивании мышью был через встроенное использование escape-последовательностей xterm ( set-clipboard
опция). Это означает, что необходимо обновить как минимум tmux 2.2, чтобы получить поведение перетаскивания и копирования для терминалов, которые не поддерживают set-clipboard
, таких как GNOME Terminal.