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 -не поддерживает настройку буфера обмена с помощью 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.
В вашей конфигурации PAM (, которая зависит от дистрибутива ), убедитесь, что строка pam _unix.so для sshd имеет аргумент nullok , например.:
auth required pam_unix.so try_first_pass nullok
В противном случае pam _unix предотвратит это, ср. справочная страница pam _unix:
The default action of this module is to not permit the user access to a service if their official password is blank. The nullok argument overrides this default.