Wie kopiere ich nach der Mausauswahl von der tmux-Ausgabe in die System-Zwischenablage?

82

Jetzt muss ich zum Kopieren in die System-Zwischenablage per Maustext im tmux-Fenster mit ShiftSchlüssel auswählen . Und dann muss ich diesen Befehl ausführen:

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

Ist es einfacher, in der Zwischenablage des Systems zu speichern? Schlüsselbindung oder besser automatisch nach der Shift-Freigabe.

Meine tmux-Konfiguration: https://gist.github.com/3641580

tomekfranek
quelle
Hier finden Sie ähnliche Fragen und Antworten zu unix.stackexchange .
Crw
2
Funktioniert eine dieser Funktionen unter MacOS, insbesondere in Sierra? Oder besser gesagt, keiner von ihnen weiß, was würde? Diese Frage ist mit markiert osx, aber die Antworten sprechen von Links- und Mittelklick ...
dwanderson

Antworten:

191

Wenn Sie iTerm2 verwenden, können Sie Text in einer Tmux-Sitzung kopieren, indem Sie die OptionTaste gedrückt halten, während Sie die Maus ziehen, um eine Auswahl zu treffen.

Dann sollte es möglich sein, Text wie gewohnt überall mit Cmd+ Veinzufügen. Fand es hier: http://web.archive.org/web/20131226003700/http://ootput.wordpress.com/2013/08/02/copy-and-paste-in-tmux-with-mouse/

Rolands Bondars
quelle
26
Hilft nicht bei tmux-Fenstern
Jak S
41
Wenn Sie Fenster haben, können Sie mit <alt> + <cmd> + Mausauswahl eine rechteckige Auswahl treffen.
Jomüller
6
Die rechteckige Auswahl bietet nicht die gleiche Funktionalität für Fenster, da die Auswahl an jeder Spalte beginnen und enden kann. Diese Lösung bezieht sich nicht auf tmux, sondern auf das Terminal selbst. Fenster sind ein Kernmerkmal von tmux.
Betamos
6
@JakS Präfix + Z zoomt den aktuellen Bereich. Dann haben Sie dieses Problem nicht. Es sei denn, Sie sind auch in einem vim split :)
dgmora
10
Im Terminal können Sie Text auswählen, indem Sie die Taste "fn" gedrückt halten. Sie können den ausgewählten Text mit "Cmd + C" kopieren.
fbessho
58

Wenn Sie iTerm2 3.x verwenden, können Sie das Kopieren / Einfügen aktivieren, indem Sie Folgendes aktivieren Applications in terminal may access clipboard:

Geben Sie hier die Bildbeschreibung ein

Markieren Sie einfach Text mit der Maus, um ihn in die OS X-Zwischenablage zu kopieren! Sie müssen nicht drücken, Optionwie in der Antwort des Akzeptors angegeben.

Sie können auch mit dem üblichen Cmd+ aus der OS X-Zwischenablage in tmux einfügen V.

Jerome Dalbert
quelle
1
Alle reattach-to-user-namespacebasierten Ansätze funktionieren bei mir nicht, weil ich oft in Linux-Maschinen ssh. Diese Lösung funktioniert jedoch hervorragend! Vielen Dank!
JDG
Gute Antwort. Ich verwende immer noch die Option <kbd> </ kbd>, wenn ich in vim bin und nicht möchte, dass die Maus eine vim-Auswahl aktiviert.
Chad Skeeters
Das hat wunderbar funktioniert. Sie müssen keine Konfiguration ändern. Vielen Dank.
Muammar
das funktioniert gut mit nur tmux, aber wie kann man nun vim yanks, die in diesem tmux laufen, an die iterm- und system-Zwischenablagen senden?
Schlow
@schlow Dies sollte wahrscheinlich eine separate Vim + tmux StackOverflow-Frage sein, aber ich benutze zufällig auch Vim und habe set clipboard=unnamedzu diesem Zweck mein Vimrc hinzugefügt
Jerome Dalbert
28

Hier wird eine ähnliche Frage beantwortet: /unix/15715/getting-tmux-to-copy-a-buffer-to-the-clipboard

Dort gefundene Lösung:

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

Überprüfen Sie auch: http://awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse/

wenn Sie folgende Optionen eingestellt haben:

Maus-Auswahlfenster

Mausauswahlfenster

Sie werden feststellen, dass Sie überhaupt keinen Text auswählen können.

Die Lösung besteht darin, die Umschalttaste zu verwenden.

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.
Blaise
quelle
4
Verwenden Sie bei iterm die Optionstaste anstelle der Umschalttaste. [wie hier erwähnt: awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse ]
gatoatigrado
2
Für MacOS xclip -o=> pbpaste, xclip -i=> pbcopy.
Gingi
23

Für os x, wenn Sie die App "Terminal" verwenden. Sie können das Scrollen mit der Maus ausschalten und die üblichen Kopier- / Einfügefunktionen (cmd + c / cmd + v) verwenden:

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

oder Sie können mit der Maus scrollen und Text mit der Taste "fn" auswählen:

set-window-option -g mode-mouse on
Sergei K.
quelle
16
Der fnwichtigste Tipp ist ein Lebensretter! Viele Leute schlagen vor ALT, es zu verwenden, aber es funktioniert nicht unter dem neuesten Mac OS x
AK_
1
Besser noch - kombinieren Sie fn und Option , um im Spaltenmodus auszuwählen!
Fletch
Wie kann man den fn-Schlüssel ändern? Verwenden einer externen Tastatur ohne FN-Taste!
CentAu
@CentAu Versuchen Sie stattdessen, die Taste "Fenster" zu verwenden
Piotrek Zatorski
17

Fügen Sie unter OSX mit tmux Version 2.2 oder höher Folgendes zu Ihrer Datei tmux.conf hinzu:

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

Für tmux Version 2.4 sollten Sie Folgendes verwenden, da sie freundlicherweise beschlossen haben, die Befehlssyntax zu ändern:

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

Beachten Sie, dass Sie möglicherweise auch reattach-to-user-namespace pbcopyanstelle von normal verwenden müssen pbcopy.

Kyle Kloepper
quelle
Auch unter Ubuntu 16.04 ist dies unter tmux 2.1 kein Problem mehr. Ich kann nur die Standardmethoden zum Kopieren und Einfügen des Terminals verwenden.
Ciro Santilli 4 冠状 病 六四 事件 4
Keine Ahnung, warum dies so niedrig auf der Liste steht, das ist die richtige Antwort!
Shawkinaw
11

Das Einfügen in meine ~ / .tmux.conf-Datei funktioniert für mich:

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

Alle anderen möglichen Lösungen, die ich gefunden habe, waren das Kopieren von leeren Inhalten in die OSX-Zwischenablage.

Das einzige Problem ist, dass dies einen Wagenrücklauf am Ende des eingefügten Inhalts zu setzen scheint.

Crcastle
quelle
3
Dies funktioniert, erfordert jedoch weiterhin, dass Sie PREFIX + y drücken, nachdem Sie die Auswahl getroffen haben. Gibt es eine Möglichkeit, Text aus einer tmux-Sitzung in OS X zu kopieren, indem Sie ihn wie in einem Linux-Terminal auswählen?
Rafael Bugajewski
6

Drücken Sie die linke Maustaste und halten Sie sie gedrückt, wählen Sie Text im Bereich aus und halten Sie die Taste gedrückt. Drücken Sie dann "y", um die Auswahl in der Zwischenablage zu speichern und den Auswahl- / Kopiermodus zu verlassen.

funktioniert hier mit iTerm 3.1.beta.5, tmux 2.5 und der folgenden Konfiguration:

### 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"
bahnfrei
quelle
+1 Endlich eine aktuelle Lösung, die funktioniert. Vielen Dank. - Es scheint in Ordnung zu sein, Enter einfach ohne vorherige Überschreibung zu überschreiben unbind.
ThomasH
Tmux Version 3 und höher verwendet, copy-mode-viwährend die ältere Version verwendet copy-mode.
MutantMahesh
5

Drücken Sie die Umschalttaste und klicken Sie dann mit der Maus !! Überprüfen Sie diesen Link. http://awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse/

user3023768
quelle
Diese Frage ist sehr alt und Ihre Lösung ist für die Verwendung mit iTerm falsch. Die aktuell akzeptierte Antwort ist die richtige.
OGHaza
Dies funktioniert für Gnome Terminal, aber diese Frage
bezieht sich auf
3

Ich konnte dieses Problem mit CMD+ lösen, Cnachdem ich den Text mit FN+ mouse drag with left button downaus dem tmuxFenster in der TerminalApp von macOS High Sierra ausgewählt hatte.

Lemmaa
quelle
1

Ich habe heute mit Netcat eine Version erstellt, die ziemlich einfach ist.

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

Hier ist die 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

Funktioniert auch mit der Maus in 1.8

Justin Thomas
quelle
1

Hier ist die Lösung, die ich für tmuxVersion 2.8, macOS Mojave 10.14.1 und Terminal.app verwende.

Nach dem Loslassen der Maustaste wird die Auswahl beim Kopieren in die Systemzwischenablage (sowie in den tmuxPuffer) entfernt:

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

Eine robuste Lösung, die mit jeder Kombination von mosh + tmux + vim + verschachtelten Sitzungen funktioniert

Nachdem ich viele Tage damit verbracht habe, ist die mit Abstand robusteste Lösung, die ich entdeckt habe, die von Suraj N. Kurapati veröffentlichte Lösung . Die Lösung funktioniert lokal mit (und ohne) tmux v3.2 und / oder vim sowie remote mit (und ohne) tmux und / oder vim , wobei sowohl Kopiermodus -Tasten als auch einfache Mausauswahl verwendet werden .

In Kombination mit Mike Gulicks (derzeit offener) Pull-Anfrage funktionieren alle diese Kombinationen auch mit Mosh .

Bis Mikes Lösung in mosh zusammengeführt wird, können Sie seine Änderungen abrufen und lokal erstellen, indem Sie:

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:

Ich denke, Sie müssen zuerst Apples Xcode / Developer Command Line Tools installieren (was IIRC jetzt durch einfaches Ausführen gccund Beenden erfolgen kann) und dann ausführen :

/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

Mit diesen Updates ist die Zwischenablage Heiliger Gral endlich erreicht!

Dies sind jedoch sehr neue Informationen, daher ist mein Beitrag ziemlich volatil. Deshalb:

Bitte überarbeiten Sie meinen Beitrag, wenn:

  1. Ich vermisse Abhängigkeiten usw. oder
  2. Das Durchführen einer gh pr checkout 1104von Mikes Änderungen ist nicht mehr erforderlich, da sie in mosh oder zusammengeführt wurden
  3. Das Erstellen aus der Quelle ist nicht mehr erforderlich, da die zusammengeführten Änderungen an die Paketmanager von brown / apt / etc übertragen wurden.
Jonathan Wheeler
quelle