Kopiere die Verknüpfung (in die X-Zwischenablage) in die .tmux.conf

22

Um Text in die X-Zwischenablage in tmux zu kopieren, mache ich derzeit Folgendes:

  • Mit in den Auswahlmodus wechseln prefix[
  • Auswahl starten mit space(mit mode-keys viÜbrigens)
  • Wählen Sie den Text aus und drücken Sie enter
  • Kopieren Sie den TMUX-Puffer mit in die X-Zwischenablage prefixctrl+c

(Ich habe eine Zuordnung als bind C-c run "tmux show-buffer | xclip -selection clipboard -i"

Ich versuche, einige dieser Schritte zu eliminieren, indem ich eine Zuordnung für den Auswahlmodus vornehme. Ich habe versucht:

bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"

das gibt mir und fehler:

.. usage: bind-key [-cnr] [-t key-table] key command [arguments]

(Ich konnte den Fehler nicht kopieren)

Wie kann ich das beheben?

BEARBEITEN: Ich habe festgestellt, dass ich mit der Maus wie bei einer normalen Auswahl (obwohl das Hervorheben nicht von Dauer ist, wählt es dennoch den Text aus) auswählen und in den tmux-Puffer kopieren (die ersten drei Schritte) und dann die folgende Bindung zum Kopieren in die x-Zwischenablage verwenden kann :

bind-key -n C-c run "tmux show-buffer | xclip -selection clipboard -i"

(Ich habe diese Methode benutzt, um diesen Text zu kopieren und es war einfach;)

beachten Sie, dass -n"kein Präfix" bedeutet, daher ist kein Escape-Befehl erforderlich. Wenn Sie nicht durch das verschwundene Highlight verwirrt werden, entspricht dies dem normalen Kopieren (über die allgemeine Benutzeroberfläche).

Das ist das Beste, was ich mir bisher ausgedacht habe.

EDIT2:ctrl+c Überlappungen mit Prozessalarmsache stellten sich heraus , deshalb habe ich erstmal auf umgestellt ctrl+alt+c. (hat nicht ganz gefallen)

EDIT3: tmux 1.8 oder so fügte Unterstützung hinzu, um Tastenkombinationen im Kopiermodus hinzuzufügen, so dass meine erste ursprüngliche Absicht nun mit etwas möglich ist, wie:

bind-key -tvi-copy y copy-pipe "xclip -selection clipboard -i"
bind-key -tvi-copy enter copy-pipe "xclip -selection clipboard -i"

Diese beiden Bindungen ermöglichen es, Text in die Zwischenablage zu kopieren, wenn ich ihn verwendet habe, enteroder yden Kopiervorgang abzuschließen.

Ich behalte diese Zeile für den Fall bei, dass ich mit der Maus kopiere und beschließe, den Inhalt des tmux-Puffers später in die Zwischenablage zu kopieren:

bind-key y run "tmux show-buffer | xclip -selection clipboard -i"
keiner
quelle
1
Sie können den Interrupt mit stty von Strg-C auf etwas anderes ändern. Zum Beispiel Strg-Z zu verwenden: stty intr=^Z. Seien Sie vorsichtig mit diesem Befehl, es ist möglich, ein reguläres Zeichen als Interrupt-Zeichen festzulegen (verwenden Sie in diesem Fall Strg-V, um es einzugeben, bis die Einstellung festgelegt ist). Und machen Sie sich keine Gedanken darüber, welcher Schlüssel verwendet wird (z. B. Strg-Z ist normalerweise der Suspend-Schlüssel).
Asche
@ash notiert, danke .. aber ich denke, ich werde ^cals Interrupt-Taste behalten, da ich es öfter benutze als zu kopieren. Ich habe auch die Antwort aktualisiert, um meine aktuelle Lösung für dieses Problem widerzuspiegeln.
Keine
hört sich gut an. Beachten Sie auch, dass viele Läufe von xmodmap die Dinge in einen komischen Zustand versetzen können, der schwer zu korrigieren ist. Ich empfehle daher, neu mit einer neuen X-Sitzung zu beginnen, wenn die Auswirkungen von Befehlen falsch erscheinen.
Asche
Laufen bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"Live gibt:Unknown command: run
Alexej Magura
1
Laufen bind-key C-c run "tmux show-buffer | xclip -selection clipboard -i"funktioniert jedoch einwandfrei.
Alexej Magura

Antworten:

13

Diese Antwort beantwortet Ihre Frage zum Erstellen einer Verknüpfung nicht direkt. Aber hier ist was ich tue.

Sie können die Weitergabe Ihrer Tastatur- / Mausereignisse an tmux vorübergehend anhalten, indem Sie gedrückt halten shift. Sie können also die Umschalttaste gedrückt halten und regelmäßige Verknüpfungen von Terminal / X verwenden, um den Kopiervorgang auszuführen. In meinem Fall mit Terminator drücke ich shift, hebe mit der Maus hervor, was ich will, kopiere mitCtrl+Shift+C

Falls Sie geteilte Fenster haben, können Sie das aktuelle Fenster mit der Zoom-Umschalttaste zoomen Prefix + zund den Kopiervorgang ausführen. (getestet auf tmux v1.8)

Muneeb
quelle
Ich konnte dies wegen horizontaler Teilungen nicht verwenden, aber der Zoom-Trick klingt großartig, danke für den Tipp.
Keine
Das funktioniert natürlich im Gnome-Terminal. aber gilt das für alle terminal-emulatoren? Wahrscheinlich nicht
jpaugh
In wsl-terminal funktioniert dies. Rette meinen Tag!
Qinsi