Ich verwende tmux mit vi-Tasten und das Kopieren / Einfügen funktioniert einwandfrei, solange Sie eine Textzeile auswählen oder nur ein Fenster haben. Wenn ich einen Textblock auswählen möchte (mehrzeilig, aber nicht in voller Breite), treten Probleme auf. Wenn ich mehrere vim-Fenster geöffnet habe, wird Text aus allen Fenstern ausgewählt, und ich muss nur Text aus einem Fenster auswählen. Das heißt, genau wie eine visuelle Auswahl in vim.
Ist das möglich zu tun?
Antworten:
Stellen Sie sicher, dass Sie unten in diesem Beitrag nach den erforderlichen Bindungen suchen, die in Ihre .tmux.conf-Datei aufgenommen werden müssen.
Ich gehe davon aus, dass Ihr Präfixschlüssel Ca lautet:
So wählen Sie in tmux einen rechteckigen Text aus (1,1) bis (2,2):
Beachten Sie, dass spacefür die Rechteckauswahl die Taste gedrückt werden muss.
Um wie gewohnt Linien auszuwählen, gehen Sie in den Kopiermodus und drücken Sie v, wählen Sie mit den Tasten jkhl aus und drücken Sie y.
Ich habe diese Bindungen in meiner .tmux.conf:
Vor Version 2.4 (20. April 2017) :
Nach Version 2.4 :
Es ist wichtig, die Standardbindung zwischen Rechteck und Umschalter aufzuheben:
Andernfalls funktioniert die neue CV-Bindung nicht.
Hinweis: Um eine Single zu haben,
.tmux.conf
die versionsübergreifend funktioniert, lesen Sie diese Frage .quelle
send
undsend-keys
. Ich sehe in superuser.com/questions/196060/selecting-text-in-tmux-copy-modesend-key
wird verwendet. Sind auch die Anführungszeichen wichtig?Sie können einen visuellen Block wie in vi - type auswählen,
v
bevor Sie mit der Auswahl beginnen. In der Manpage heißt dies "Rechteck umschalten".quelle
Wie Lars betont, wird
v
tatsächlich das getan , wonach Sie gefragt haben, indem Sie zwischen dem Rechteckmodus und dem Vollzeilenauswahlmodus umschalten.space
undenter
dienen jeweils dazu, eine neue Auswahl zu starten und zu kopieren.[
Rufen Sie den Kopiermodus mit Ihrem Präfix gefolgt von auf und fügen Sie Ihre kopierte Auswahl mit in ein beliebiges tmux-Fenster ein]
Das hat mich auch verwirrt, da
v
in vim wiespace
in tmux funktioniert, mit der Auswahl zu beginnen.Bei der Ausgabe
:list-keys -t vi-copy
in tmux wird die vollständige Befehlstabelle im Kopiermodus angezeigt.quelle
Da keine der anderen Antworten eine optimale Lösung für das Problem bietet, stehe ich nicht über der Nekromantie.
Die Blockauswahl funktioniert auf die gleiche Weise wie in Vim, ohne dass Sie die Leertaste drücken müssen. Nur eine einfache Strg-V-Taste, die in Ihrem Muskelgedächtnis verankert ist.
Es erfordert die Bearbeitung Ihrer .tmux.conf (aber im vi-Modus ist dies bereits der Fall) und ich bin mir nicht sicher, ob es für tmux <2.4 funktioniert.
Fügen Sie dies zu Ihrer .tmux.conf hinzu, um die Vim-Auswahl und die Yank-Bindungen zu replizieren:
Rufen Sie den Auswahlmodus auf und navigieren Sie zu der Stelle, an der Sie mit der Auswahl beginnen möchten.
v
Beginnt nun mit der regulären<C-v>
AuswahlV
(zeichenweise , zeilenweise), startet die Blockauswahl und (Umschalt-v) startet die Zeilenauswahl. Unabhängig von der Art der Auswahl,y
Sie tmux paste buffer (oder die X-Zwischenablage; siehe oben stehende Codekommentare) verwenden.Gleich wie Vim.
quelle
EDIT: Nachdem ich den Quellcode überprüft habe, habe ich meine Antwort komplett neu geschrieben.
Ich dachte ursprünglich, dass dies nicht möglich wäre, weil ich es nicht zum Laufen bringen könnte, aber die anderen Antworten sind korrekt, da
v
sie der richtige Schlüssel dafür sind, aber es ist nicht klar, wie man das benutzt, besonders wenn man an Vim gewöhnt ist.Außerdem würde es für mich nicht funktionieren, weil ich
v
gezwungen warbegin-selection
- ich denke, ich muss diese Idee blind kopiert haben, um die vim-Methode nachzuahmen, mit der ich eine charakterbezogene Auswahl starten wollte, ohne zu wissen, dass dies später Probleme verursachen würde Blockauswahl.Nachdem ich diese Bindung entfernt hatte (indem ich die Zeile in meinem
.tmux.conf
auskommentierte und tmux neu startete), fing es an zu funktionieren, aber es ist immer noch ziemlich verwirrend, weil es überhaupt nicht dasselbe ist wie vim.Mit Standardbindungen sollte es wie folgt funktionieren:
setw -g mode-keys vi
in Ihrem Browser haben.tmux.conf
.C-a [
, um den Kopiermodus zu startenv
Space
, um die Auswahl zu startenv
erneut drücken , um die Auswahl auf Zeichenweise zurückzusetzen oder umgekehrt.Sie müssen das nicht eingeben,
v
bevor Sie drückenSpace
. Sie können die zeichenweise Auswahl mitSpace
zuerst starten und anschließend drücken,v
um in den rechteckigen Auswahlmodus zu wechseln.Es unterscheidet sich von vim darin, dass Sie in tmux zwei Zeichen eingeben müssen:
Space
undv
um in den rechteckigen Auswahlmodus zu gelangen. In vim musst du nur tippenCtrl-V
.Auch in vim
v
startet eine zeichenweise Auswahl, nicht sperren.Leider scheint es in tmux (
Shift-v
in vim) keinen zeilenweisen Auswahlmodus zu geben .BEARBEITEN: Es sieht so aus, als ob Tmux Version 2.0 einen zeilenweisen Auswahlmodus bietet
Shift-v
(ich habe es aber noch nicht ausprobiert!)quelle
Shift-v
in Release 2.0, März 2015) um eine Auswahl in Zeilenrichtung erweitert wurde , sicherlich nach meiner Antwort und lange nach Ihrer ursprünglichen Antwort. Vielleicht sprechen Sie und ich über zwei verschiedene Dinge, wenn wir über die zeilenweise Auswahl sprechen. Bitte vergleichen Sie mit den 3 Auswahlmodi in VIM (mitv
,Shift-v
undCtrl-v
).v
Auswahl ist charakterbezogen. Ich bin in der Version 1.9a und habe nicht die vim-artige zeilenweise Auswahl. Mit der Version 2.0 sind genau die drei Modi, die vim hat, auch in tmux möglich, oder?