Verwenden Sie Strg + [0-9], um mit tmux zwischen Fenstern zu wechseln

8

Ich habe angefangen zu verwenden, tmuxaber ich finde, dass das Verwenden Ctrlb0-9sehr ärgerlich ist, weil es so oft verwendet wird.

Wie binde ich die Tastatur, damit ich nur Ctrl0-9Fenster wechseln muss (wie in Chrome)?

Ich habe versucht, es in der zu konfigurieren .tmux.conf, aber ohne Erfolg.

Dies ist meine aktuelle .tmux.conf-Datei

bind C select-pane -t :.+
set -g status-bg black
set -g status-fg white
Johan Bjäreholt
quelle
Die Verknüpfungen sind so einfach wie erläutert, Strg + [1-9] für Registerkarte [1-9]. Der Unterschied zwischen ihnen ist, dass es derzeit nicht funktioniert und 'C-Auswahlfenster binden -t :. +' Nur etwas war, das ich ausprobiert habe
Johan Bjäreholt

Antworten:

9

Einige der Control + -Ziffern-Tastenanschläge erzeugen ziemlich standardisierte Sequenzen, aber nicht alle.

Folgendes habe ich in dem xterm gefunden , das ich zur Hand hatte:

C-1: 1  (i.e. not different form a plain 1 keystroke)
C-2: ^@
C-3: ^[
C-4: ^\
C-5: ^]
C-6: ^^
C-7: ^_
C-8: ^?
C-9: 9  (i.e. plain 9)
C-0: 0  (i.e. plain 0)

Die gleichen Sequenzen werden in iTerm 2 generiert (obwohl dies sehr konfigurierbar ist).

Wenn Ihr Terminal - Emulator ähnliche Sequenzen erzeugt, dann Sie könnten die meisten von ihnen binden (obwohl Sie den Standard, nicht-numerischen „Namen“ für die Schlüssel verwenden müssen, zB C-@oder ^@, et cetera). Sie müssen eine Möglichkeit finden, Ihr Terminal so zu konfigurieren, dass eine Sequenz für alle Tastenanschläge gesendet wird, die noch nichts anderes als den unveränderten Schlüssel senden (z. B. 1, 9 und 0 oben).

Jedoch ohne Präfix diese Schlüssel - Bindung ( bind -n …) wird wahrscheinlich viele Sachen brechen. Insbesondere ^[ist das Escape-Zeichen (das in fast allen Terminal-Steuerungssequenzen verwendet wird) ^?normalerweise das Delete-Zeichen ^@(als C-Space), das üblicherweise bei der Bearbeitung von Emacs (im Stil) usw. verwendet wird.

Ein besserer Ansatz besteht wahrscheinlich darin, Ihr Terminal so zu konfigurieren, dass die von tmux 1.8 erkannten xterm-ähnlichen "modifyOtherKeys" -Sequenzen gesendet werden (wenn Ihr xterm dies unterstützt, fordert tmux dies automatisch an):

C-1: ^[[27;5;49~
C-2: ^[[27;5;50~
C-3: ^[[27;5;51~
C-4: ^[[27;5;52~
C-5: ^[[27;5;53~
C-6: ^[[27;5;54~
C-7: ^[[27;5;55~
C-8: ^[[27;5;56~
C-9: ^[[27;5;57~
C-0: ^[[27;5;48~

Die tmux- Namen für diese Schlüssel sind genau C-0und so weiter.

Hinweis: Diese Schlüsselnamen und Sequenzen werden von tmux- Versionen älter als 1.8 nicht erkannt .

Sie würden sie so binden (in Ihrem .tmux.conf):

bind-key -n C-0 select-window -t :0
bind-key -n C-1 select-window -t :1
bind-key -n C-2 select-window -t :2
bind-key -n C-3 select-window -t :3
bind-key -n C-4 select-window -t :4
bind-key -n C-5 select-window -t :5
bind-key -n C-6 select-window -t :6
bind-key -n C-7 select-window -t :7
bind-key -n C-8 select-window -t :8
bind-key -n C-9 select-window -t :9
Chris Johnsen
quelle
"Wenn Ihr xterm dies unterstützt, fordert tmux automatisch dazu auf" - könnten Sie kurz den Mechanismus erläutern / erwähnen, mit dem tmux dies erreicht?
Charles
@Charles: tmux 1.8 sendet die Sequenz ^[[>4;1m, um die Funktion " modifyOtherKeys" zu aktivieren (siehe XTerm-Steuerungssequenzen , Suche nach " modifyOtherKeys" ). Allerdings tmux 1.9 nicht mehr diese Sequenz senden .
Chris Johnsen
1

Die Antwort von @ChrisJohnsen ist perfekt. Einige Benutzer möchten jedoch möglicherweise Hilfe beim Einrichten von Iterm 2- Schlüsseln, um dieses Verhalten zu erreichen.

Gehen Sie zunächst zu "Iterm2 -> Einstellungen -> Profile -> Schlüssel" wie in:

Iterm Profilkonfiguration

Klicken Sie anschließend auf das +Symbol, um eine Voreinstellung hinzuzufügen, wenn einige Ctrl+ Numbernicht in der Liste enthalten sind (das Format in der Liste wird angezeigt ^number), wie dies bei der der Fall ist ^1, die in der Standardliste nicht verfügbar ist.

Drücken Sie Ctrl+, 1wenn Sie die Tastenkombination auswählen, und wählen Sie als Aktion "Escape-Sequenz senden". Fügen Sie dann Chris Johnsens Escape-Sequenzen ohne das ^ [hinzu, das durch die Aktion iterm2 hinzugefügt wird:

Geben Sie hier die Bildbeschreibung ein

Wiederholen Sie diesen Vorgang später für alle anderen Steuertasten und bearbeiten Sie die bereits vorhandenen.

Werner
quelle