Binde das tmux-Präfix an den OS X-Cmd-Schlüssel (oder eine andere Bindung)

21

Ich bin an iTerm2 (oder Terminal.app für diesen Fall) unter OS X gewöhnt. Aber ich möchte tmux (oder screen) verwenden, aber das Problem ist ähnlich wie bei beiden Apps.

Meine Idee ist es, einen einzelnen iTerm-Tab mit einer TMUX-Sitzung zu haben, die aus mehreren Tabs besteht. Um den Übergang durchzuführen, muss ich unter tmux eine grundlegende Funktion konfigurieren: Wechseln Sie mit cmd + n zum Tab 'n' (wie Firefox, Chrome, iTerm2 selbst usw.).

Ich kann jedoch keine Möglichkeit finden, die cmd-Taste auf der Mac-Tastatur zuzuordnen. Ich habe zuerst versucht, cmd als Präfixschlüssel zu implementieren, ohne Erfolg. Ich habe versucht, Einstellungen vorzunehmen

set-option -g prefix M-a (hoping for Meta-a)

set-option -g prefix ^a (hoping for ^ to work)

aber nichts geht. Ist das möglich? Ich muss das Präfix nicht wirklich an cmd binden, möchte aber in der Lage sein, die tmux-Tabs mit cmd + n zu ändern.

Vielen Dank

Rubenfonseca
quelle
karabiner-elements hat eine spezifische Bindung für tmux pqrs.org/osx/karabiner/complex_modifications/#modifier-keys
Fabrizio Bertoglio

Antworten:

8

Sie möchten eine Tastenfolge aufzurufen (zuerst Ctrl-b, dann n im Bereich von 0 bis 9).

Verwenden Sie dazu am besten ein Tastaturkürzel wie Butler oder Keyboard Maestro .


Mit Butler :

Wählen Sie + »Smart Item» Tastenanschläge , konfigurieren Sie den Hotkey Cmd-1 . Drücken Sie Ctrl-Bund dann 1für die Tastenanschläge . Konfigurieren Sie es so, dass es nur in Terminal (oder iTerm) gültig ist. Es wird Sie warnen, dass andere Anwendungen es möglicherweise nicht mögen, aber Sie wissen das bereits.


Verwenden von Keyboard Maestro :

Erstellen Sie links eine neue Gruppe, die nur in Terminal (oder iTerm) verfügbar ist.

Fügen Sie ein neues Element hinzu, das durch Hotkey-Trigger ( Cmd-1) ausgelöst wird, und fügen Sie seinen Aktionen zwei Tastenanschläge hinzu : Ctrl-Bund 1.


Vielleicht möchten Sie sich auch dieses Thema ansehen - es wird jedoch nicht verwendet Commandund funktioniert bei mir nicht mit Terminal.


Aus der tmux-Dokumentation :

Schlüssel an Befehl binden. Schlüssel können mit dem Präfix 'C-' oder 'ˆ' für Strg-Schlüssel oder 'M-' für Alt- (Meta-) Schlüssel angegeben werden. Das Flag -r zeigt an, dass diese Taste möglicherweise wiederholt wird (siehe Option "Wiederholungszeit").

Sie unterstützen keine dritte Modifikationstaste.

Daniel Beck
quelle
omg was für ein geiler hack! es funktioniert auch! Ich habe Keyboard Maestro benutzt, weil Butler übertrieben zu sein scheint. Vielen Dank!
Rubenfonseca
Keyboard Maestro arbeitet wunderbar dafür
Sam Selikoff
19

In iTerm2 können Sie Hex-Codes, die an das Terminal gesendet werden, Verknüpfungen zuordnen. Gehe zu iTerm2 Einstellungen -> Schlüssel. Klicken Sie unter Globale Tastenkombinationen auf das Pluszeichen (+) und geben Sie die gewünschte Tastenkombination ein, z. B. cmd + 1, die erfasst wird. Wählen Sie dann "Hex-Code senden". Geben Sie in das angezeigte Feld die Hex-Codes ein, die durch Leerzeichen getrennt an tmux gesendet werden sollen. Strg-B ist 0x02. Geben Sie für "Strg-B 1" "0x02 0x31" ein. Weitere Hex-Codes finden Sie hier: http://www.nthelp.com/ascii.htm

Ich habe Cmd mit h, j, k, l zugeordnet, um mich zwischen den tmux-Fenstern zu bewegen, und Cmd mit% und ", um die Teilungen zu erstellen. Ich werde wahrscheinlich etwas Ähnliches tun, um mich zwischen vim-Teilungen mit einer Steuertaste zu bewegen.

Sesotek
quelle
Dies ist definitiv die beste Antwort für Benutzer von iTerm2. Vielen Dank!
newUserNameHere
1
Aus irgendeinem Grund funktioniert dies nicht auf meinem iTerm2 Build 3.0.2
jasonszhao
Wenn dies nicht funktioniert, liegt das möglicherweise daran, dass iTerm2 den Cmd-Schlüssel standardmäßig an den Switch-Tab bindet. Möglicherweise stößt Ihr Modifikator zusammen. Ich musste die Tabulator-Taste in die Option ändern, damit dies auf CMD + n
Surfrdan,
2

Spezielle Verknüpfungen können mit Terminal.app erstellt werden. Ich habe es neulich herausgefunden, aber das war vielleicht schon vor dem Löwen möglich.

Gehen Sie zu Einstellungen> Einstellungen und klicken Sie auf die Registerkarte "Tastatur". Jetzt müssen Sie eine neue Tastenkombination hinzufügen, indem Sie auf das Plus-Symbol unter dem Feld klicken. Jetzt möchten Sie eine Tastenkombination festlegen, die "Zeichenfolge an Shell sendet".

Beispiel: Angenommen, ich möchte festlegen, dass M-LeftArrow zugeordnet wird prefix-p(vorheriges Fenster).

Key: Left Arrow 
Modifier: Option 
Action: send string to shell

Geben Sie nun einfach prefix-pin das Eingabefeld ein, in dem prefixsich alles befindet, was Sie für tmux festgelegt haben (ich verwende cntrl-a, damit das Feld angezeigt wird \001p). Wenn Sie einen Fehler machen, werden Zeichen zum Löschen eingefügt, anstatt sie tatsächlich zu löschen. Drücken Sie also die Taste "Ein Zeichen löschen", um rückwärts zu springen, falls Sie etwas falsch machen.

Sonderzeichen, die ich festgelegt habe, um das Leben einfacher zu machen:

M-Left  > Previous Window
M-Right > Next Window
M-Up    > Enter scrolling mode
M-Down  > Next Pane

Sie können auch cntrl-anything und shift-anything ändern. Denken Sie jedoch daran, dass dies Ihre $ EDITOR- oder andere Programme stören kann. Achten Sie also darauf, welche speziellen Funktionen möglicherweise unbrauchbar werden.

Beachten Sie auch, dass ich nicht herausfinden konnte, wie diese Funktionalität in iTerm2 dupliziert werden kann.

Scicalculator
quelle
1

Vielleicht möchten Sie auch die native (aber sehr experimentelle) Integration in Betracht ziehen, die iTerm2 mit tmux bietet: http://code.google.com/p/iterm2/wiki/TmuxIntegration

Auf diese Weise teilt iTerm2 die Registerkarte für Sie, wenn Sie Cmd-D drücken, um den Bildschirm zu teilen. Dies ist großartig, da die Teilung nativ ist. Sie können also die Kante in der Mitte ziehen, um die Breite anzupassen, oder Sie können einen Bereich durch Klicken auswählen. Das Gleiche gilt für neue Registerkarten / Fenster (aber die Verknüpfungen unterscheiden sich geringfügig - sonst hätten Sie keine Möglichkeit, Nicht-tmux-Registerkarten hinzuzufügen).

Und wie bei tmux wird beim Trennen und erneuten Anbringen alles für Sie gespeichert.

Es gibt jedoch zwei Einschränkungen: * Dies ist eine sehr experimentelle Funktion und für mich sehr schuppig. * Sie müssen tmux selbst erstellen (mithilfe des Archivs irgendwo auf dem Link oben).

-Chris

Chris
quelle
Ich weiß, es sind zwei Jahre vergangen, aber ob das noch funktioniert? Ich habe die Anweisungen unter Ihrem Link cmd+Dbefolgt , aber die iTerm2-Fenster geteilt, nicht die von tmux.
Sam Selikoff
1
@SamSelikoff Du musst damit anfangen tmux -CC.
Jasonszhao
0

Sie können sich auch diesen Blog-Beitrag ansehen, der sehr detaillierte Erklärungen zur Integration von tmux / iterm enthält: http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/

Jérémie
quelle
2
Webseiten verschwinden und werden ständig verschoben. Bitte fassen Sie mindestens den Inhalt des Blogposts zusammen und geben Sie den Titel und den Autor an, damit Ihre Antwort nicht völlig wertlos wird, wenn der Link abbricht.
David Richerby