Копировать в буфер обмена из Tmux в El Capitan

19

Я вполне доволен изменениями в терминале в Эль-Капитане (см., Например, этот вопрос ).

Однако я не могу понять, как включить копирование в системный буфер обмена из Tmux. Например, теперь, когда я могу правильно выделять текст в Tmux с помощью мыши, как я могу скопировать выбранный текст в буфер обмена, в дополнение к собственному буферу Tmux?

У меня есть следующее в моем tmux.conf:

setw -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on

setw -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection

Я попытался изменить последнюю строку

bind-key -t vi-copy 'y' copy-selection \; copy-pipe "pbcopy"

но это не сработало. Буду благодарен за предложения!

Благодарность!

siphiuel
источник
Cmd-C не работает?
холме
1
@partix - нет, поскольку скопированный текст автоматически отменяется после отпускания кнопки мыши (или трекпада). Конечно, он работает в терминале, но не из Tmux в терминале.
Сифиюэль
Обновление до Tmux 2.1 прервало прокрутку мыши в панелях Tmux.
Сифиюэль

Ответы:

27

На самом деле, я просто нашел очень простое решение, как снова включить копирование с помощью Cmd + C.

В терминальном приложении по умолчанию перейдите в «Вид» -> «Разрешить отчеты мыши» и снимите его. Это оно.

PS: Очевидно, что новые приятные функции, такие как перетаскивание разделенного экрана в tmux, перестают работать после снятия отметки мыши.

Oplatek
источник
PS: я использовал ранее решение от @siphiuel, которое также отлично работает.
Оплатек
1
Спасибо!!! Это самый простой способ! Только то, что история сломана. Я могу видеть только часть истории
Сато
Супер приятно. Это работает
ShikharDua
и это также работает для удаленной сессии tmux; Я думаю, что bind-key ... copy-pipeрешение может работать, только если это локальная сессия tmux. Опять же, может быть, если вы выполните удаленный сеанс tmux в локальном сеансе tmux, это может сработать? В любом случае, снятие флажка «Разрешить создание отчетов с помощью мыши» сработало для меня, и есть даже ярлык ⌘-R (Cmd-R), так что вы можете быстро отключить его, чтобы сделать копию, а затем снова включить.
Аарон Уоллентин,
24

Если вы используете iTerm2 3.x, вы можете выполнить копирование / вставку, включив Applications in terminal may access clipboard:

введите описание изображения здесь

Просто выделите текст мышью, чтобы скопировать его в буфер обмена OS X!

Вы также можете вставить из буфера обмена OS X в tmux с помощью обычного Cmd+ V.

Джером Далберт
источник
2
это было самое простое решение для меня.
Леннарт
Это круто!
mljrg
17

Если вы удерживаете функциональную клавишу нажатой, вы также можете выбрать и скопировать в буфер обмена с помощью apple + c.

amohr
источник
Мы ищем нечто большее, чем однострочный ответ. Попробуйте расширить свой ответ, чтобы дать более подробную информацию.
Аллан
2
@Allan Это полный ответ, хотя это всего лишь одна строка. Это так просто.
pkuhar
Кстати, я обнаружил, что он работает только на клавиатуре ноутбука, а не на прикрепленных клавиатурах :(
amohr
8

На самом деле, я был неправ, утверждая, что copy-pipeэто не работает. Это делает, и copy-selectionтогда является излишним, так как copy-pipeоба копируют текст в Tmux pasteboard и передают в произвольную команду оболочки. Так работает следующая строка:

bind-key -t vi-copy 'y' copy-pipe "pbcopy"

Тем не менее, нужно нажать, yпрежде чем отпустить кнопку мыши. Я наткнулся на это в документации к плагину tmux-yank :

«Делая выбор, используя tmux mode-mouse on или mode-mouse copy-mode, вы не можете полагаться на поведение по умолчанию« отпускать мышь после выделения для копирования ». Вместо этого нажмите клавишу y, прежде чем отпустить мышь».

Так что это работает, но с несколько раздражающим нужно нажать y, чтобы скопировать выделенный мышью текст.

siphiuel
источник
3
Если вы используете Terminal.app: в macOS Sierra это не будет работать из-за регрессии в поведении Terminal.app. Вам нужно будет снова использовать хак "reattach-to-user-namespace".
m1keil
1
Согласитесь на @ m1keil комментарий. Более того, по какой-то причине мне пришлось скомпилировать пространство имен reattach-to-user с дополнительными переключателями, например так: brew install reattach-to-user-namespace --with-wrap-pbcopy-and-pbpaste(я использую Homebrew)
siphiuel
4

Используя tmux версии 2.2 или новее, добавьте в файл tmux.conf следующее:

bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "pbcopy"
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"
Кайл Клёппер
источник
Работает для El Capitan 10.11, tmux 2.7
Гомер
3

Ответ @Oplatek вступит в силу

В терминальном приложении по умолчанию перейдите в «Вид» -> «Разрешить отчеты мыши» и снимите его.

Но при этом мы не сможем прокрутить экран мышью.

Вот еще один способ без отключения Allow mouse reporting: нажмите Fnи выделите текст мышью.

secfree
источник
0

Используя tmux 2.2, OS X El Capitan, Terminal Version 2.6.1 (по умолчанию поставляется с El Capitan), следующая установка работает безупречно (пока).

$ cat ~/.tmux.conf
set -g mouse on
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "pbcopy"
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"

Чтобы скопировать, нажмите левую кнопку мыши, отметьте текст и отпустите. Помеченный текст затем помещается в буфер обмена и может быть вставлен с помощью Cmd+, vкак обычно.

Кьелл
источник
-2

я нахожу только один путь

откройте настройки терминала / профили в терминале, измените тип терминала с xterm-256 на ANSI, откройте новое окно терминала и наслаждайтесь :)

Леван Петросян
источник