5

Я использую 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 ответа2

8

Для tmux 2.2 и выше используйте:

bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "pbcopy"
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"
3

Не существует встроенного способа настройки поведения «мыши вверх», которое завершает выделение, начатое мышью. Подробности смотрите в reset_mode для window_copy_mouse() в window-copy.c (ссылки на источник tmux 1.8); в частности, в этом фрагменте кода нет ссылок на параметры окна, сеанса или сервера.

Есть обходной путь, но это, вероятно, немного крайний случай:

  • Активируйте привязку copy-pipe (например, нажмите Enter), прежде чем отпустить кнопку мыши.
    Это запустит вашу команду оболочки, скопирует выделение в буфер и выйдет из режима копирования (т.е. обычное поведение для copy-pipe).

Есть небольшой побочный эффект:

  • Событие мыши, которое ваш терминал отправит, когда вы наконец отпустите кнопку, заставит tmux снова войти в режим копирования. Вам нужно будет вручную выйти (например, Escape или Cc) из этого «дополнительного» режима копирования.
    Вероятно, это можно считать ошибкой (input_mouse() не проверяет, является ли событие мыши событием «кнопка вверх» перед запуском нового режима копирования); но это в основном безвредно (кроме неудобства необходимости выхода из второго экземпляра режима копирования).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .