Fare seçiminden sonra tmux çıktısından sistem panosuna nasıl kopyalanır?


82

Şimdi sistem panosuna kopyalamak için tmux penceresinde mouse yazısını Shifttuşu ile seçmem gerekiyor . Ve sonra şu komutu çalıştırmam gerekiyor:

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

Sistem panosuna daha kolay kaydetme şansı var mı? Shift bırakıldıktan sonra tuş bağlama veya daha iyisi bunu otomatik olarak yapın.

Tmux yapılandırmam: https://gist.github.com/3641580


İşte unix.stackexchange ile ilgili benzer bir Soru-Cevap .
crw

2
Bunlardan herhangi biri MacOS'ta, özellikle Sierra'da çalışıyor mu? Ya da hiçbiri bilmiyor, kimse ne yapacağını biliyor mu? Bu soru etiketlendi osx, ancak yanıtlar sol ve orta tıklama hakkında konuşuyor ...
dwanderson

Yanıtlar:


192

İTerm2 kullanıyorsanız, Optionseçim yapmak için fareyi sürüklerken tuşuna basılı tutarak Tmux oturumunda metin kopyalayabilirsiniz .

Daha sonra her zamanki gibi Cmd+ ile herhangi bir yere metin yapıştırmak mümkün olmalıdır V. Burada bulundu: http://web.archive.org/web/20131226003700/http://ootput.wordpress.com/2013/08/02/copy-and-paste-in-tmux-with-mouse/


26
Tmux bölmelerine yardımcı olmuyor
Jak S

41
Bölmeleriniz varsa, <alt> + <cmd> + fare seçimini kullanarak dikdörtgen seçim yapmak mümkündür.
jomuller

6
Dikdörtgen seçim, seçim herhangi bir sütunda başlayıp bitebileceğinden bölmeler için aynı işlevselliği sağlamaz. Bu çözüm tmux ile değil, terminalin kendisiyle ilgilidir. Bölmeler, tmux'un temel bir özelliğidir.
Betamos

6
@JakS öneki + Z geçerli bölmeyi yakınlaştırır. O zaman bu problemi yaşamazsın. Aynı zamanda bir vim bölünmesinin içinde değilseniz :)
dgmora

10
Terminal'de, "fn" tuşunu basılı tutarak metni seçebilirsiniz. Seçili metni "Cmd + C" ile kopyalayabilirsiniz.
fbessho

58

İTerm2 3.x kullanıyorsanız, aşağıdakileri etkinleştirerek kopyalama / yapıştırma işlemini gerçekleştirebilirsiniz Applications in terminal may access clipboard:

görüntü açıklamasını buraya girin

OS X panosuna kopyalamak için metni farenizle vurgulamanız yeterli! OptionKabul eden yanıtta önerildiği gibi basmaya gerek yok .

Ayrıca OS X panosundan normal Cmd+ ile tmux'a yapıştırabilirsiniz V.


1
Tüm reattach-to-user-namespacetabanlı yaklaşımlar benim için işe yaramıyor, çünkü genellikle linux makinelerine ssh yapıyorum. Ancak bu çözüm harika çalışıyor! Teşekkür ederim!
jdg

Mükemmel cevap. Vim'deyken hala <kbd> Option </kbd> kullanıyorum ve farenin bir vim seçimini etkinleştirmesini istemiyorum.
Chad Skeeters

Bu çok güzel çalıştı. Herhangi bir konfigürasyonu değiştirmeye gerek yok. Teşekkürler.
muammar

bu sadece tmux ile harika çalışıyor, ama şimdi o tmux içinde çalışan vim yank'leri iterm ve sistem panolarına nasıl gönderebilirim ??
schlow

@schlow Bu muhtemelen ayrı bir Vim + tmux StackOverflow sorusu olmalı ama ben de Vim kullanıyorum ve set clipboard=unnamedbu amaçla vimrc'ime ekledim
Jerome Dalbert

28

Burada cevaplanan benzer bir soru var: /unix/15715/getting-tmux-to-copy-a-buffer-to-the-clipboard

Çözüm burada bulundu:

# 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"

Ayrıca kontrol edin: http://awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse/

Aşağıdaki seçenekleri ayarladıysanız:

fare seçme bölmesi

fare seçme penceresi

hiç metin seçemeyeceğinizi fark edeceksiniz.

çözüm, shift tuşunu kullanmaktır.

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.

4
iterm ile shift tuşu yerine seçenek tuşunu kullanın. [burada bahsedildiği gibi: awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse ]
gatoatigrado

2
MacOS için, xclip -o=> pbpaste, xclip -i=> pbcopy.
Gingi

23

OS x için, "Terminal" uygulamasını kullanıyorsanız. Fare kaydırmasını kapatabilir ve normal kopyalama / yapıştırma işlevlerini kullanabilirsiniz (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

veya fareyle kaydırmayı kullanabilir ve "fn tuşu" kullanarak metin seçebilirsiniz:

set-window-option -g mode-mouse on

16
fnAnahtar ucu hayat kurtarıcı olduğunu! birçok kişi kullanmayı öneriyor ALTancak en son Mac OS
x'te çalışmıyor

1
Daha da iyisi - sütun modunu kullanmayı seçmek için fn ve seçeneği birleştirin !
Fletch

Fn anahtarını değiştirmenin herhangi bir yolu var mı? Fn tuşu olmayan bir harici klavye kullanma!
CentAu

@CentAu Bunun yerine "Pencere" tuşunu kullanmayı deneyin
Piotrek Zatorski

19

Tmux sürüm 2.2 veya üzerini kullanan OSX'te aşağıdakileri tmux.conf dosyanıza ekleyin:

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

Tmux 2.4 sürümü için, komut sözdizimini değiştirmeye karar verdiklerinden, şunu kullanmalısınız:

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

reattach-to-user-namespace pbcopySade yerine kullanmanız gerekebileceğini unutmayın pbcopy.


Ayrıca Ubuntu 16.04'te bu artık tmux 2.1'de sorun değil. Sadece terminalin varsayılan kopyala yapıştır yöntemlerini kullanabilirim.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Listede neden bu kadar düşük olduğuna dair hiçbir fikriniz yok, bu doğru cevap!
shawkinaw

11

Bunu ~ / .tmux.conf dosyama koymak benim için çalışıyor:

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

Bulduğum diğer tüm olası çözümler, OSX panosuna bir tür boş içerik kopyalıyordu.

Tek sorun, bunun yapıştırılan içeriğin sonuna bir satır başı koymasıdır.


3
Bu çalışır, ancak yine de seçimi yaptıktan sonra PREFIX + y tuşlarına basmanızı gerektirir. OS X'te bir tmux oturumundan metni yalnızca bir Linux terminalindeki gibi seçerek kopyalamanın bir yolu var mı?
Rafael Bugajewski

6

sol fare düğmesine basın ve basılı tutun, bölmedeki metni seçin ve yine de düğmeyi basılı tutun. daha sonra seçimi pano içinde kaydeden ve seçim / kopyalama modundan çıkan "y" tuşuna basın.

iTerm 3.1.beta.5, tmux 2.5 ve aşağıdaki yapılandırmayla burada çalışır:

### 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"

+1 Son olarak, işe yarayan güncel bir çözüm. Teşekkürler. - Önceden girmeden sadece Enter'ı geçersiz kılmak iyi görünüyor unbind.
ThomasH

Tmux sürüm 3 ve üstü copy-mode-vi, eski sürüm kullanırken kullanır copy-mode.
MutantMahesh


3

Ben bu sorunu çözmek başardı CMD+ Cile metin seçtikten sonra FN+ mouse drag with left button downdan tmuxpencere TerminalMacOS Yüksek Sierra app.


1

Bugün netcat kullanarak oldukça basit bir sürüm yaptım.

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

Tmux.conf şu şekildedir:

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'de fare ile de çalışır


1

tmux2.8 sürümü, macOS Mojave 10.14.1 ve Terminal.app için kullandığım çözüm burada .

Fare düğmesini serbest bıraktıktan sonra, bu, sistem panosuna (ve tmuxarabelleğe) kopyalarken seçimi kaldırır :

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

0

Herhangi bir mosh + tmux + vim + iç içe oturum kombinasyonuyla çalışan sağlam bir çözüm

Bununla uğraşmak için günlerce harcadıktan sonra keşfettiğim en sağlam çözüm, Suraj N. Kurapati'nin sunduğu çözümdür . Çözüm, tmux v3.2 ve / veya vim ile (ve olmadan) yerel olarak ve ayrıca hem kopyalama modu tuşlarını hem de basit fare seçimini kullanarak tmux ve / veya vim ile (ve olmadan) uzaktan çalışır .

Mike Gulick'in (şu anda açık olan) çekme talebiyle birleştirilirse , tüm bu kombinasyonlar mosh ile de çalışır.

Mike'ın çözümü mosh ile birleştirilene kadar, değişikliklerini alıp yerel olarak inşa edebilirsiniz:

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

Mac os işletim sistemi:

Bence önce Apple'ın Xcode / Developer Komut Satırı Araçlarını (ki bu, IIRC, şimdi basitçe çalıştırıp gccçıkarak yapılabilir), ardından çalıştırarak yüklemeniz gerekir :

/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

Bu güncellemelerle, nihayet pano kutsal kasesine ulaşıldı!

Ancak, bu çok yeni bir bilgi, bu nedenle bu yazım oldukça uçucu. Bu nedenle:

Lütfen aşağıdaki durumlarda yazımı gözden geçirin:

  1. Eksik bağımlılıklarım, vb. Veya
  2. gh pr checkout 1104Mike'ın değişikliklerinden bir tanesini gerçekleştirmek artık gerekmiyor çünkü değişiklik mosh ile birleştirildi veya
  3. Kaynaktan derlemeye artık gerek yok çünkü birleştirilmiş değişiklikler brew / apt / etc paket yöneticilerine zorlandı.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.