Tmux copy-pipe с выбором мыши
Я использую copy-pipe
на OS X, чтобы поделиться системным буфером обмена с Tmux 1.8:
unbind -t vi-copy Enter
bind -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"
Это работает при входе в режим выбора и копировании текста (выберите текст, затем нажмите Enter), но не при выборе текста с помощью мыши. Можно ли установить команду, которая должна запускаться после выбора мыши, как copy-pipe
работает после нажатия Enter? Т.е. мне нужно бежать reattach-to-user-namespace pbcopy
когда выбор оставлен.
2 ответа
Не существует встроенного способа настройки поведения "мыши вверх", которое завершает выделение, начатое мышью. Подробнее см. reset_mode
ярлык window_copy_mouse()
в window-copy.c
(ссылки на источник tmux 1.8); в частности, в этом фрагменте кода нет ссылок на параметры окна, сеанса или сервера.
Есть обходной путь, но это, вероятно, немного крайний случай:
- Активируйте свой
copy-pipe
привязка (например, нажмите Enter), прежде чем отпустить кнопку мыши.
Это запустит вашу команду оболочки, скопирует выделение в буфер и выйдет из режима копирования (т.е. обычное поведение дляcopy-pipe
).
Есть небольшой побочный эффект:
- Событие мыши, которое ваш терминал отправит, когда вы наконец отпустите кнопку, заставит tmux снова войти в режим копирования. Вам нужно будет вручную выйти (например, Escape или Cc) из этого "дополнительного" режима копирования.
Это, вероятно, можно считать ошибкой (input_mouse()
не проверяет, что событие мыши является событием "кнопка вверх" перед запуском нового режима копирования); но это в основном безвредно (кроме неудобства необходимости выхода из второго экземпляра режима копирования).
Для tmux 2.2 и более поздних версий используйте:
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "pbcopy"
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"