lier le préfixe tmux à la clé cmd OS X (ou toute autre liaison)

21

Je suis habitué à iTerm2 (ou Terminal.app dans ce cas) sur OS X. Mais je veux passer à l'utilisation de tmux (ou écran, mais le problème est similaire aux deux applications).

Mon idée est donc d'avoir un seul onglet iTerm avec une session tmux ouverte avec plusieurs onglets. Pour faire la transition, j'ai une fonctionnalité de base que je dois configurer sur tmux: changer l'onglet 'n' en utilisant cmd + n (comme Firefox, Chrome, iTerm2 lui-même, etc.)

Cependant, je ne trouve pas de moyen de mapper la touche cmd sur le clavier mac. J'ai d'abord essayé d'implémenter cmd comme clé de préfixe, sans succès. J'ai essayé de mettre

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

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

mais rien ne marche. Est-ce possible? Je n'ai pas vraiment besoin de lier le préfixe à cmd, mais je veux pouvoir changer les onglets tmux avec cmd + n.

Je vous remercie

rubenfonseca
la source
1
karabiner-elements a une liaison spécifique pour tmux pqrs.org/osx/karabiner/complex_modifications/#modifier-keys
Fabrizio Bertoglio

Réponses:

8

Vous souhaitez appeler une séquence de touches (d'abord Ctrl-b, puis n allant de 0 à 9).

Votre meilleur pari est d'utiliser un utilitaire de raccourci clavier tel que Butler ou Keyboard Maestro pour le faire pour vous.


Utilisation de Butler :

Sélectionnez + »Élément intelligent» Séquence de touches , configurez le raccourci clavier Cmd-1 . Appuyez sur Ctrl-B, puis sur 1pour les frappes . Configurez-le pour qu'il ne soit valide que dans le terminal (ou iTerm). Il vous avertira que d'autres applications pourraient ne pas l'aimer, mais vous le savez déjà.


Utilisation de Keyboard Maestro :

Créez un nouveau groupe sur la gauche qui n'est disponible que dans Terminal (ou iTerm).

Ajoutez un nouvel élément, déclenché par le déclencheur de raccourci ( Cmd-1) et ajoutez deux séquences de touches à ses actions: Ctrl-Bet 1.


Vous pourriez également vouloir jeter un coup d'œil à ce sujet - ne l'utilise pas Commandet n'a pas fonctionné pour moi en utilisant Terminal.


De la documentation tmux :

Liez la touche clé à la commande. Les clés peuvent être spécifiées avec le préfixe «C-» ou «ˆ» pour les touches ctrl, ou «M-» pour les touches alt (méta). L'indicateur −r indique que cette clé peut se répéter, voir l'option de répétition.

Ils ne prennent pas en charge une troisième touche de modification.

Daniel Beck
la source
omg quel hack génial! ça marche aussi! utilisé Keyboard Maestro parce que Butler semble exagéré. Je vous remercie!
rubenfonseca
Keyboard Maestro fonctionne à merveille pour cela
Sam Selikoff
19

Dans iTerm2, vous pouvez mapper des raccourcis vers des codes hexadécimaux qui sont envoyés dans le terminal. Goto iTerm2 Preferences -> Keys. Dans Global Shortcut Keys, cliquez sur le + et ajoutez le type de votre raccourci souhaité comme le cmd + 1, qui sera capturé. Sélectionnez ensuite "Envoyer le code hexadécimal". Dans la zone qui apparaît, tapez les codes hexadécimaux que vous souhaitez envoyer à tmux séparés par des espaces. Ctrl-B est 0x02, donc pour "Ctrl-B 1", tapez "0x02 0x31". Voir ici pour plus de codes hexadécimaux: http://www.nthelp.com/ascii.htm

J'ai mappé Cmd avec h, j, k, l pour se déplacer entre les volets tmux et Cmd avec% et "pour créer les divisions. Je ferai probablement quelque chose de similaire pour se déplacer entre les divisions vim avec une seule touche de contrôle.

sesotek
la source
C'est certainement la meilleure réponse pour ceux qui utilisent iTerm2. Merci!
newUserNameHere
1
Pour une raison quelconque, cela ne fonctionne pas sur mon iTerm2 build 3.0.2
jasonszhao
Si cela ne fonctionne pas, cela peut être dû au fait que iTerm2 lie la clé cmd à switch-tab par défaut. Votre modificateur peut être en conflit. J'ai dû changer la touche de l'onglet swith en option pour que cela fonctionne sur CMD + n
Surfrdan
2

Des raccourcis spéciaux peuvent être créés avec Terminal.app. Je viens de le découvrir l'autre jour, mais cela a peut-être été possible avant Lion.

Allez dans Préférences> Paramètres et cliquez sur l'onglet "Clavier". Vous devez maintenant ajouter un nouveau raccourci clavier en cliquant sur l'icône plus sous la case. Maintenant, vous voulez définir un combo de touches qui "envoie la chaîne au shell".

Exemple: disons que je veux définir M-LeftArrow pour qu'il soit mappé prefix-p(fenêtre précédente).

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

Maintenant, tapez simplement prefix-pdans la zone de saisie où se prefixtrouve tout ce que vous avez défini pour tmux (j'utilise cntrl-a pour que la boîte s'affiche \001p). Notez que si vous faites une erreur, les caractères de suppression seront insérés au lieu de supprimer réellement les caractères, donc appuyez sur le bouton "Supprimer un caractère" pour revenir en arrière, au cas où vous gâcheriez.

Personnages spéciaux que j'ai définis pour vous faciliter la vie:

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

Vous pouvez également modifier cntrl-n'importe quoi et shift-quoi que ce soit, mais n'oubliez pas que cela pourrait interférer avec votre $ EDITOR ou d'autres programmes, alors faites attention aux fonctions spéciales qui pourraient être rendues inutiles.

Notez également que je ne pouvais pas comprendre comment dupliquer cette fonctionnalité dans iTerm2.

scicalculator
la source
1

Vous pouvez également envisager l'intégration native (mais très expérimentale) qu'offre iTerm2 avec tmux: http://code.google.com/p/iterm2/wiki/TmuxIntegration

De cette façon, lorsque vous appuyez sur Cmd-D pour diviser l'écran, iTerm2 divisera l'onglet pour vous. C'est très bien, car le fractionnement est natif, vous pouvez donc faire glisser le bord au milieu pour réajuster les largeurs, ou vous pouvez sélectionner un volet en cliquant sur. Idem pour les nouveaux onglets / fenêtres (mais les raccourcis sont légèrement différents - sinon vous n'auriez aucun moyen d'ajouter des onglets non-tmux).

Et comme tmux, si vous détachez et rattachez, tout sera enregistré pour vous.

Il y a cependant deux mises en garde: * c'est une fonctionnalité très expérimentale et très floconneuse pour moi. * vous devrez construire tmux vous-même (en utilisant l'archive quelque part sur le lien ci-dessus).

-Chris

Chris
la source
Je sais que cela fait deux ans, mais une idée si cela fonctionne toujours? J'ai suivi les instructions sur votre lien, mais cmd+Ddivise les volets d'iTerm2, pas ceux de tmux.
Sam Selikoff
1
@SamSelikoff Vous devez commencer par tmux -CC.
jasonszhao
0

Vous pouvez également consulter cet article de blog contenant des explications très détaillées sur l'intégration tmux / iterm: http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/

Jérémie
la source
2
Les pages Web disparaissent et se déplacent tout le temps. Veuillez au moins résumer le contenu de l'article de blog et donner des détails sur son titre et son auteur afin que votre réponse ne devienne complètement inutile si le lien se brise.
David Richerby