Bei mu Ubuntu 12.04-Setups sind meine Befehle zum Kopieren und Einfügen der tmux-Zwischenablage wie folgt eingerichtet:
set -g prefix M-a
unbind C-b
bind C-c run "tmux save-buffer - | xclip -i -sel clipboard"
bind C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"
Dies funktionierte am längsten bis vor ungefähr einem Monat, als ich vermutete, dass eine Konfigurations- oder Paketänderung vorgenommen wurde, die das oben Genannte gebrochen hat. Im GNOME-Terminal funktioniert das Einfügen mit prefix+ ctrl-vund weiterhin einwandfrei ctrl-shift-v.
Der xclip
Kopierbefehl funktioniert jedoch nicht mehr, egal was ich tue, und ich habe versucht, die oben genannte benutzerdefinierte Präfixbindung zu entfernen, -select
anstatt sie zu -sel
verwenden clipboard
usw. Dies ist für einen GVim-Benutzer wie mich so ziemlich ein Show-Stopper, da ich es nicht tue. Es gibt nicht einmal die ctrl-shift-cProblemumgehung für das GNOME-Terminal, bei der tmux die Shell übernimmt. Ich gehe in den Kopiermodus, wähle Text mit space+ aus movementund wenn ich prefix+ ausführe ctrl-c, passiert absolut nichts. Bevor dies fehlschlug, zeigte tmux im Benachrichtigungsbereich unten eine Bestätigungsmeldung an.
Hat jemand Vorschläge, wie man dies debuggen könnte? Dies ist ein ziemlich großer Produktivitätsverlust. Ich kann wahrscheinlich den Trick zur vorübergehenden Umgehung von Dateien verwenden , aber es wäre großartig zu wissen, was genau passiert ist xclip
.
type xclip
?xsel -b
?xsel -i -b
scheint den Trick zu tun!xsel -b
undxclip -selection clipboard
würde das Gleiche tun!Antworten:
Das
xsel
Dienstprogramm ähnelt demxclip
, ist jedoch etwas anders implementiert. Normalerweise würde ich erwarten, dass sie sich auf die gleiche Weise verhalten, aber sie führen nicht genau den gleichen X-Bibliotheksaufruf durch, sodass es in einigen Eckfällen möglich ist,xsel
aber nicht zu funktionierenxclip
, oder umgekehrt. Versuchen:quelle
Das Hinzufügen
-b
zum Befehlrun-shell
(oderrun
) hat das Problem behoben. Mit-b
dem Shell-Befehl wird im Hintergrund ausgeführt.bind C-c run-shell -b "tmux save-buffer - | xclip -i -sel clipboard"
quelle
Ich kann es zwar nicht mehr reproduzieren, aber hier ist die technische Antwort, was in Ihrem Fall passiert sein könnte.
Zunächst müssen Sie verstehen, wie die X11-Zwischenablage funktioniert. Sie können den Aufsatz von jwz dazu lesen: http://www.jwz.org/doc/x-cut-and-paste.html
Kurz gesagt, die Anwendung, die den Inhalt der Zwischenablage enthält, muss ausgeführt werden, bis eine andere Anwendung den Besitz bestätigt. Wenn Sie also ausführen, wird
xclip -i <<< test
xclip im Hintergrund ausgeführt, bis Sie eine weitere Auswahl treffen:Nun ist das alles in Ordnung, aber wenn Sie diese Shell verlassen, werden alle zu dieser Sitzung gehörenden Prozesse standardmäßig beendet, indem ihnen ein HUP-Signal gesendet wird. Dies bedeutet, dass xclip beendet wird und Sie nicht mehr auf den Inhalt Ihrer Zwischenablage zugreifen können.
Die vorgeschlagene Problemumgehung (falls Sie kein xsel haben) besteht darin, das HUP-Signal mithilfe der folgenden Bindung zu ignorieren:
xsel
ist von diesem Problem nicht betroffen, da das erste, was es nach dem fork () tut, darin besteht, sich vom steuernden Terminal zu trennen, damit es das HUP-Signal nicht empfängt, wenn seine Shell beendet wird (Sie werden es nicht einmal in den obigen ps sehen Ausgabe aber nur, wenn Sie aps -e | grep xsel
) tun .quelle
Ich habe ein ähnliches Problem und die temporäre Datei wird in diesem speziellen Fall leider nicht helfen. Dies liegt daran
xclip
, dass es sich anders zu verhalten scheint, wenn es von tmux erzeugt wird, als wenn es "interaktiv" ausgeführt wird, und darauf wartet, dass eine andere Anwendung den Besitz des Zwischenablagebereichs übernimmt. Versuchen Sie es mitxclip -l 1
, um es sofort zu beenden (siehe Manpage für Details).quelle
bind C-y run-shell "tmux save-buffer - | xclip -l 1 -i"
.xclip
passiert, wenn Sie versuchen, den Puffer zu kopieren. Wenn es dort hängen bleibt und auf etwas wartet, hilft es dann, es zu töten? Außerdem müssen Sie den Auswahlmodus verlassen, indem Sie die Eingabetaste drücken (und ihn daher im Puffer speichern), bevor Sie versuchen, den Puffer in die X-Zwischenablage zu kopieren.Dies ist eine alte Frage, aber ich vermute, ich habe die Lösung von der Tmux-Seite des Arch-Wikis :
Ihr Befehl sollte also werden:
quelle
Dies ist eine funktionierende Konfiguration, die ich verwende:
quelle