Tmux 2.4+ з прив’язками режиму копіювання та 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-термінал не підтримує налаштування буфера обміну за допомогою послідовностей виходу 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 я вважаю, що єдиним методом встановлення системного буфера обміну мишкою було використання вбудованого використання послідовностей xterm escape ( set-clipboard
опція). Це означає, що необхідно оновити принаймні tmux 2.2, щоб отримати поведінку перетягування та копіювання для терміналів, які не підтримують set-clipboard
, наприклад, термінал GNOME.