Pbcopy kann in der tmux-Sitzung nicht verwendet werden

63

Unter tmux 1.4, das von Ports auf Snow-Leopard installiert wurde, kann ich den eingebauten OSX- pbcopyBefehl nicht verwenden.

Außerhalb von tmux:

> echo "abc" | pbcopy
> echo $(pbpaste) # or using ^v
abc

Aber innerhalb von tmux:

> echo "123" | pbcopy
> echo $(pbpaste)
abc

Ich habe die Manpage durchsucht, kann jedoch keine Optionen finden, die sich auf dieses Verhalten beziehen könnten. Ich kann auch nicht verstehen, warum ich mich tmuxmit der Shell-Umleitung herumschlagen sollte.

Hat jemand irgendwelche Hinweise?

lagsalot
quelle
1
Beachten Sie, dass dies unter xclipLinux funktioniert . Übrigens echo pbpastesollte in "Pbpaste" führen.
Dennis Williamson

Antworten:

75

Mit Homebrew

brew install reattach-to-user-namespace --with-wrap-pbcopy-and-pbpaste

oder Macports

sudo port install tmux-pasteboard

Stellen Sie das Folgende an den Anfang von ~ / .tmux.conf

set-option -g default-command "reattach-to-user-namespace -l zsh"

Möglicherweise möchten zshSie die verwendete Shell aus Gründen der Portabilität austauschen $SHELL.

Entnommen aus => robots.thoughtbot.com

William Bettridge-Radford
quelle
6
Verwenden bashSie, wenn Sie auf Bash sind, anstattzsh
drei
Mein Bash ist nicht richtig initialisiert (.bashrc, .bash_profile nicht bezogen). Wie soll das gemacht werden, um das zu tun?
Brad Parks
1
Muss die Option jetzt aktivieren brew install reattach-to-user-namespace --wrap-pbcopy-and-pbpaste
Ian Yang
4
Eine robustere Option für die tmux.conf istset-option -g default-command "reattach-to-user-namespace -l $SHELL"
khoomeister
5
Option --wrap-pbcopy-and-pbpastewurde --with-wrap-pbcopy-and-pbpastestattdessen mit veraltet !
6.
11

Beim tmuxTrennen von der Konsole (um das Anhängen / Trennen zu unterstützen) wird dies so durchgeführt, dass keine Kommunikation mehr mit der GUI möglich ist.

Apples Patches für GNU screenverwenden einen privaten Systemaufruf, um sie auf andere Weise zu trennen. Es gibt einen Patch im Macports Bug-Tracker, der pbcopy/ pbpastewieder zum Laufen bringt . Ich reichte es auch beim Homebrew-Repo ein, wo es kurz angenommen und dann zurückgesetzt wurde.

Dies liegt daran, dass wenn dieser Patch angewendet wird, tmux abstürzt, wenn eine neue Verbindung zu einer Sitzung hergestellt wird.

Weitere Informationen finden Sie in der Pull-Anfrage auf Github für das Homebrew-Projekt.

David Goodlad
quelle
Das würde Sinn machen ... außer dass, wenn ich zum Beispiel open .in einer tmux-Sitzung starte, es ein Finder-Fenster öffnet , das in Ordnung ist, also "es nicht mehr erlaubt, mit der GUI zu kommunizieren" nicht ganz korrekt erscheint?
Jamesdlin
5

Ich habe ein Github-Projekt gefunden, das tmux so umschließt , dass pbpaste und pbcopy funktionieren und nicht die beschriebenen Probleme aufweist, die dazu geführt haben, dass Homebrew den Patch entfernt hat. Es ist ziemlich einfach zu installieren, nur ein kleines Stück Kompilierung und eine Zeile in Ihrer .tmux.conf

Homebrew hatte einen Patch, aber wie andere erwähnten, wurde er zurückgezogen, weil er Probleme beim erneuten Anbringen verursachte.

Es wurde ein Problem gegen tmux eingereicht , das jedoch geschlossen wurde, da der tmux-Autor keinen Mac zum Testen hat. Die README-Datei zum Projekt github tmux-MacOSX-pasteboard enthält ausführliche Informationen darüber, warum das Patchen von tmux in diesem Fall schwierig ist, sowie eine Reihe weiterer Informationen zur jeweiligen Situation. Für mich funktioniert es unter OSX 10.6, und das Durchlesen des Codes scheint auch für 10.5 zu funktionieren.

mmrobins
quelle
1

Hier gibt es ein offenes Ticket: http://sourceforge.net/tracker/index.php?func=detail&aid=2960136&group_id=200378&atid=973265

Datum: 28.02.2010 11:20:57 UTC Absender: nicm

Es gibt natürlich keinen Grund, warum Sie tmux showb nicht einfach weiterleiten können.

Datum: 28.02.2010 11:20:05 UTC Absender: nicm

Es sei denn, jemand schickt mir Code oder Hardware mit OS X.

Ich habe versucht, showb an pbcopy weiterzuleiten, und es hat nicht funktioniert.

~: echo "12345"
12345
[use copy-mode to copy "12345"]
~: tmux showb
12345
~: tmux showb | pbcopy
~: pbpaste

Terrasse
quelle
1

Ich verwende tmux-MacOSX-pasteboard sowohl auf Snow Leopard als auch auf Lion und es patcht die pbcopy / pbpaste-Funktionalität für Sie in tmux. Auch einfach zu installieren.

wyattdanger
quelle
3
tmux-MacOSX-pasteboard ist jetzt auch in macports mit dem Namen tmux-pasteboard verfügbar
anddam