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.
xclip...
заявление с простымpbcopy
делает трюк.Unknown key: MouseDragEnd1Pane
DragEnd
ключей вам нужен как минимум tmux 2.2 .В качестве дополнения к принятому ответу люди часто обнаруживают, что при отпускании кнопки мыши беспокоит выход из режима копирования (это то, что происходит с
copy-pipe-and-cancel
). Смотрите: https://github.com/tmux/tmux/issues/140 . Следовательно, в более новом tmux (я использую 2.6) мы можем использоватьcopy-pipe
вместе сclear selection
копировать в выделение, но не выходить из режима копирования:источник
Расширяя оба ответа для копирования из msys2 в буфер обмена Windows (и снимите выделение):
источник
Еще одно расширение об использовании
Shift
ключа.Удерживайте
Shift
при выделении текста с помощью мыши. Теперь у вас есть стандартное меню, вызываемое правой кнопкой мыши (продолжайте удерживать или нажмитеShift
снова), и вы можете использоватьCtrl+Shift+C
иCtrl+Shift+V
для копирования и вставки. Скопированный текст также будет доступен в системном буфере обмена .Проверено на
Ubuntu 18.04.1
сtmux 2.6
.Источник: https://forum.upcase.com/t/tmux-ctrl-shift-c-and-ctrl-shift-v-bindings/1208 .
источник