Скопіюйте у буфер обміну з Tmux в Ель-Капітані


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"

але це насправді не спрацювало. Буду вдячний за пропозиції!

Спасибі!


Cmd-C не працює?
nohillside

1
@partix - ні, оскільки скопійований текст автоматично відміняється після відпускання кнопки миші (або трекпада). Звичайно, це працює в Терміналі, але не в Tmux в терміналі.
Сифієль

Оновлення до Tmux 2.1 порушило прокрутку миші на панелях Tmux.
Сифієль

Відповіді:


27

Насправді я просто знаходжу дуже просте рішення, як знову ввімкнути копіювання за допомогою Cmd + C.

За замовчуванням додаток Terminal перейдіть до Перегляд -> "Дозволити звітування миші" та зніміть його. Це воно.

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


PS: Раніше я використовував рішення від @siphiuel, яке також добре працює.
Oplatek

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
це було найпростішим рішенням для мене.
lennart

Це круто!
mljrg

17

Якщо утримувати функціональну клавішу вниз, ви також можете вибрати та скопіювати у буфер обміну з яблуком + c.


Ми шукаємо щось більше, ніж відповідь на один рядок. Спробуйте розширити свою відповідь, щоб отримати детальнішу інформацію.
Аллан

2
@Allan Це повна відповідь, навіть якщо це лише один рядок. Це так просто.
pkuhar

btw, я виявив, що працює лише на клавіатурі ноутбука, а не на клавіатурі :(
amohr

8

Власне, я помилявся, заявивши, що copy-pipeце не працює. Це робить, і copy-selectionтоді є зайвим, оскільки copy-pipeобидва копіюють текст на картон Tmux, а труби - в довільну команду оболонки. Отже, працює наступний рядок:

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

Однак потрібно натиснути, yперш ніж відпустити кнопку миші. Я натрапив на це в документації для tmux-yank плагіна:

"Під час здійснення вибору з використанням режиму tmux-миші у режимі копіювання або режиму-миші ви не можете покластися на поведінку" випустити мишу після вибору для копіювання "за замовчуванням. Натомість натисніть y, перш ніж випускати мишу."

Так це працює, але з дещо прикрою необхідністю натискати y, щоб скопіювати вибраний мишею текст.


3
Якщо ви використовуєте Terminal.app: у macOS Sierra це не працюватиме через регресію в поведінці Terminal.app. Вам потрібно буде знову використовувати хак "reattach-to-user-names -pace".
m1keil

1
Погодьтеся на коментарі @ m1keil. Більше того, мені чомусь довелося компілювати простір імен для повторного приєднання до користувача з додатковими перемикачами, як-от так: 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 набуває чинності

За замовчуванням додаток Terminal перейдіть до Перегляд -> "Дозволити звітування миші" та зніміть його.

Але таким чином ми не змогли б прокрутити екран мишкою.

Ось ще один спосіб без відключення Allow mouse reporting: Натисніть Fnта виберіть текст мишкою.


0

Використовуючи tmux 2.2, OS X El Capitan, Terminal Версія 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, відкрити нове вікно терміналу і насолоджуватися :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.