Как скопировать в системный буфер обмена из вывода tmux после выбора мыши?

Теперь для копирования в системный буфер обмена я должен выделить с помощью мыши текст в окне tmux с помощью клавиши Shift. И тогда мне нужно запустить эту команду:

tmux save-buffer - | reattach-to-user-namespace pbcopy

Есть ли возможность проще сохранить в системный буфер обмена? Привязка клавиш или лучше сделать это автоматически после отпускания Shift.

Моя конфигурация tmux: https://gist.github.com/3641580


person tomekfranek    schedule 05.09.2012    source источник
comment
Вот аналогичные вопросы и ответы на unix.stackexchange.   -  person crw    schedule 05.09.2012
comment
Что-нибудь из этого работает на MacOS, особенно на Sierra? Вернее, никто из них не знает, кто знает, что бы? Этот вопрос помечен как osx, но в ответах говорится о щелчке левой и средней кнопкой мыши ...   -  person dwanderson    schedule 17.01.2017


Ответы (14)


Если вы используете iTerm2, вы можете копировать текст в сеансе Tmux, удерживая клавишу Option и перетаскивая мышь, чтобы сделать выбор.

Затем должна появиться возможность вставлять текст куда угодно с помощью Cmd + V как обычно. Нашел здесь: http://web.archive.org/web/20131226003700/http://ootput.wordpress.com/2013/08/02/copy-and-paste-in-tmux-with-mouse/ < / а>

person Rolands Bondars    schedule 07.11.2013
comment
Не помогает с панелями tmux - person Jak S; 04.09.2014
comment
такое простое решение, хотел бы я знать / погуглил / выяснил год назад. - person Garrett Davis; 07.11.2014
comment
Если у вас есть панели, можно сделать прямоугольное выделение с помощью ‹alt› + ‹cmd› + выделения с помощью мыши. - person jomuller; 07.01.2015
comment
@jomuller большое спасибо! alt-drag работает и в urxvt - person Austin Adams; 11.05.2015
comment
Прямоугольное выделение не обеспечивает такой же функциональности для панелей, поскольку выделение может начинаться и заканчиваться в любом столбце. Это решение связано не с tmux, а с самим терминалом. Панели - это основная функция tmux. - person Betamos; 03.11.2015
comment
Префикс @JakS + Z увеличивает масштаб текущей панели. Тогда у вас не будет этой проблемы. Если только вы не находитесь в разделении vim :) - person dgmora; 15.10.2016
comment
Может кто-нибудь объяснить, что такое клавиша Options? - person lony; 10.04.2017
comment
@lony Клавиша Option на клавиатуре Mac помечена как Alt. - person Rolands Bondars; 11.04.2017
comment
В Терминале вы можете выделить текст, удерживая клавишу fn. Вы можете скопировать выделенный текст с помощью Cmd + C. - person fbessho; 07.05.2017

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

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

Просто выделите текст мышью, чтобы скопировать его в буфер обмена macOS! Нет необходимости нажимать Option, как предлагается в ответе принимающего.

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

person Jerome Dalbert    schedule 09.08.2016
comment
Все подходы, основанные на reattach-to-user-namespace, не работают для меня, потому что я часто использую ssh на Linux-машинах. Однако это решение отлично работает! Спасибо! - person jdg; 08.12.2016
comment
Отличный ответ. Я все еще использую опцию ‹kbd› ‹/kbd›, когда нахожусь в vim, и не хочу, чтобы мышь активировала выделение vim. - person Chad Skeeters; 30.03.2017
comment
Это прекрасно сработало. Нет необходимости изменять какую-либо конфигурацию. Спасибо. - person muammar; 09.02.2018
comment
это отлично работает только с tmux, но теперь, как отправить vim yanks, работающие в этом tmux, в iterm и системные буферы обмена? - person schlow; 05.12.2019
comment
@schlow Это, вероятно, должен быть отдельный вопрос Vim + tmux StackOverflow, но я тоже использую Vim, и для этой цели я добавил set clipboard=unnamed в свой vimrc - person Jerome Dalbert; 06.12.2019
comment
Хорошее решение, но теперь каждый отмеченный текст будет копироваться в буфер обмена - person greenchapter; 07.04.2021

Для os x, если вы используете приложение «Терминал». Вы можете отключить прокрутку мыши и использовать обычные функции копирования / вставки (cmd + c / cmd + v):

set-option -g mouse-select-pane off
set-option -g mouse-resize-pane off
set-option -g mouse-select-window off
set-window-option -g mode-mouse off

или вы можете использовать прокрутку мыши и выбрать текст с помощью клавиши «fn»:

set-window-option -g mode-mouse on
person Sergei K    schedule 07.03.2016
comment
fn ключевой совет - это спасение жизни! многие люди предлагают использовать ALT, но он не работает в последней версии Mac OS x - person AK_; 13.07.2017
comment
Еще лучше - объедините fn и option, чтобы выбрать в режиме столбца! - person Fletch; 05.10.2018
comment
Есть ли способ изменить клавишу fn? Использование внешней клавиатуры без клавиши fn! - person CentAu; 25.11.2018
comment
@CentAu Попробуйте вместо этого использовать клавишу Window - person Piotrek Zatorski; 10.07.2020
comment
Прохладный! А пока нужно set-option -g mouse off. - person lk_vc; 11.06.2021

Здесь есть ответ на аналогичный вопрос: https://unix.stackexchange.com/questions/15715/getting-tmux-to-copy-a-buffer-to-the-clipboard

Решение найдено там:

# move x clipboard into tmux paste buffer
bind C-p run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"
# move tmux copy buffer into x clipboard
bind C-y run "tmux show-buffer | xclip -i"

Также проверьте: http://awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse/

если вы установили следующие параметры:

панель выбора мыши

окно выбора мыши

вы заметите, что вообще не можете выделить текст.

решение - использовать клавишу Shift.

hold down the shift key and then left click and drag across the target text. you must also hold down the shift key and then middle click in order to paste the text.
person Blaise    schedule 20.09.2012
comment
с iterm используйте клавишу выбора вместо клавиши Shift. [как упомянуто здесь: awhan.wordpress.com/ 18 апреля 2012 г. / tmux-copy-paste-with-mouse] - person gatoatigrado; 22.05.2013
comment
Для MacOS: xclip -o = ›pbpaste, xclip -i =› pbcopy. - person Gingi; 14.09.2016

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

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

Для tmux версии 2.4, поскольку они любезно решили изменить синтаксис команды, вы должны использовать:

bind-key -T copy-mode MouseDragEnd1Pane send -X copy-pipe-and-cancel "pbcopy"

Обратите внимание, что вам также может потребоваться использовать reattach-to-user-namespace pbcopy вместо простого pbcopy.

person Kyle Kloepper    schedule 02.05.2016
comment
Также в Ubuntu 16.04 это больше не проблема tmux 2.1. Я могу просто использовать стандартные методы копирования и вставки терминала. - person Ciro Santilli 新疆再教育营六四事件ۍ 04.05.2016
comment
Понятия не имею, почему это так мало в списке, это правильный ответ! - person shawkinaw; 06.09.2017

Помещение этого в мой файл ~ / .tmux.conf у меня работает:

bind y run-shell "reattach-to-user-namespace -l zsh -c 'tmux show-buffer | pbcopy'"

Все другие возможные решения, которые я нашел, заключались в копировании какого-то пустого содержимого в буфер обмена OSX.

Единственная проблема заключается в том, что это, кажется, помещает возврат каретки в конец вставляемого содержимого.

person crcastle    schedule 28.09.2012
comment
Это работает, но по-прежнему требует от вас нажатия PREFIX + y после того, как вы сделали выбор. Есть ли способ скопировать текст из сеанса tmux в OS X, просто выбрав его, как в терминале Linux? - person Rafael Bugajewski; 02.08.2015

нажмите и удерживайте левую кнопку мыши, выделите текст на панели и по-прежнему удерживайте кнопку нажатой. затем нажмите «y», чтобы сохранить выделение в буфере обмена и выйти из режима выделения / копирования.

здесь работает с iTerm 3.1.beta.5, tmux 2.5 и следующей конфигурацией:

### copy & paste -------------------------------------------------------
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Setup 'v' to begin selection as in Vim
bind-key -T copy-mode-vi v send -X begin-selection
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
person bahnfrei    schedule 28.06.2017
comment
+1 Наконец-то актуальное решение, которое работает. Спасибо. - Кажется, можно просто переопределить Enter без предварительного unbind. - person ThomasH; 29.06.2017
comment
Tmux версии 3 и выше использует copy-mode-vi, тогда как более старая версия использует copy-mode. - person MutantMahesh; 16.09.2020

нажмите клавишу Shift, а затем щелкните мышью !! Проверьте эту ссылку. http://awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse/

person user3023768    schedule 23.11.2013
comment
Это очень старый вопрос, и ваше решение не подходит для использования с iTerm. Текущий принятый ответ является правильным. - person OGHaza; 23.11.2013
comment
Это работает для Gnome Terminal, но этот вопрос касается OSX - person JKirchartz; 13.03.2015

Я смог решить эту проблему с помощью _1 _ + _ 2_ после выбора текста с помощью _3 _ + _ 4_ из окна tmux в приложении Terminal macOS High Sierra.

person lemmaa    schedule 08.01.2019

Вот решение, которое я использую для tmux версии 2.8, macOS Mojave 10.14.1 и Terminal.app.

После отпускания кнопки мыши это удаляет выделение при копировании в системный буфер обмена (а также в буфер tmux):

bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"
person robenkleene    schedule 29.11.2018

Сегодня я сделал довольно простую версию с использованием netcat.

https://github.com/base698/tmux-copy-paste-mac-osx

Вот tmux.conf:

bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-pipe 'nc localhost 5682'
bind p run-shell 'nc localhost 5683; nc localhost 5683 | tmux load-buffer -' \; paste-buffer

Работает и с мышью в 1.8

person Justin Thomas    schedule 12.04.2013

Надежное решение, которое работает с любой комбинацией mosh + tmux + vim + вложенных сеансов.

Потратив много дней на решение этой проблемы, я обнаружил, что самым надежным решением является опубликованное решение. Решение работает локально с (и без) tmux v3.2 и / или vim, а также удаленно с (и без) tmux и / или vim, используя обе копии -режимные клавиши и простой выбор мышью.

В сочетании с запросом на вытягивание Майка Гулика (открытый в настоящее время), все эти комбинации также работают с mosh.

Пока решение Майка не будет объединено в mosh, вы можете вытащить его изменения и построить локально, используя:

Ubuntu:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0 \
&& sudo apt-add-repository https://cli.github.com/packages \
&& sudo apt update \
&& sudo apt install -y gh autoconf automake perl protobuf-compiler libprotobuf-dev libncurses-dev zlib1g-dev libutempter-dev libssl-dev pkg-config \
&& mkdir -p ~/tmp/mosh \
&& git clone https://github.com/mobile-shell/mosh ~/tmp/mosh \
&& cd ~/tmp/mosh \
&& gh pr checkout 1104 \
&& ./autogen.sh \
&& ./configure \
&& make \
&& sudo make install

macOS:

Я думаю, вам нужно сначала установить инструменты командной строки Apple Xcode / Developer (которые, IIRC, теперь можно сделать, просто запустив gcc и выйдя), а затем запустив:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" \
&& brew install gh autoconf automake
&& mkdir -p ~/tmp/mosh \
&& git clone https://github.com/mobile-shell/mosh ~/tmp/mosh \
&& cd ~/tmp/mosh \
&& gh pr checkout 1104 \
&& ./autogen.sh \
&& ./configure \
&& make \
&& sudo make install

Благодаря этим обновлениям, наконец, стал святым Граалем буфера обмена!

Однако это очень новая информация, поэтому этот мой пост довольно нестабилен. Следовательно:

Пожалуйста, исправьте мой пост, если:

  1. Мне не хватает зависимостей и т. Д., Или
  2. Выполнение gh pr checkout 1104 изменений Майка больше не требуется, потому что они были объединены в mosh, или
  3. Сборка из исходного кода больше не требуется, поскольку объединенные изменения были переданы менеджерам пакетов brew / apt / etc.
person Jonathan Wheeler    schedule 19.10.2020

В macOS Terminal Tmux копирование из определенной панели:

  1. Опция «Удерживать» (курсор меняется на перекрестие) [см. * Ниже]
  2. Щелкните и перетащите, чтобы выделить текст
  3. Скопируйте / вставьте как обычно, с CMD-C / V

* Вам может потребоваться переключить Разрешить создание отчетов с помощью мыши с помощью CMD-R (см. Терминал, Просмотр -...). Я обнаружил, что часто переключаю это либо для прокрутки с помощью мыши внутри панелей tmux, либо для копирования и вставки.


В моем .tmux.conf я включаю set -g mouse on

Это на macOS Catalina, tmux 3.1c

person Paul    schedule 06.04.2021

Для тех, кто хочет узнать, как выделение работает в tmux теперь и на Mac: используйте клавишу fn для выбора, копирования и вставки.

person Abrar A.    schedule 14.06.2021