Faire en sorte qu'iTerm traduise 'méta-clé' de la même manière que dans les autres systèmes d'exploitation

179

Dans le shell bash avec liaison de touches emacs, vous pouvez utiliser une combinaison de touches comme Mf, Mb pour avancer ou reculer d'un mot respectivement à l'invite du shell. Habituellement, la touche méta est mappée sur la touche Alt sous Windows et Linux. Cependant, dans iTerm, je n'ai pas pu trouver un moyen de mapper cette clé méta sur la touche Option ou Commande sur mon MacBook Pro.

Il semble que sous OS X, la clé méta soit par défaut mappée sur la touche ESC. Vous pouvez donc utiliser ESC-f, ESC-b sur iTerm. Cependant, la touche ESC n'est apparemment pas pratique à utiliser. De plus, iTerm a une option qui vous permet de modifier le mappage pour la touche méta (Signets> Profils> Profils de clavier> Global> Option Key as ...), ce paramètre ne semble pas du tout fonctionner.

Par conséquent, si quelqu'un sait quelle est la solution à ce problème, faites-le moi savoir.

J'ai mis à niveau vers la dernière version, 0.9.6.1012, et ce comportement persiste toujours.

Edit: Quelques éclaircissements à ma question. Le raccourci clavier dont je parle est pour le shell bash, pas pour emacs. Il se trouve que, par défaut, le shell bash utilise également le même raccourci clavier que emacs.

ejel
la source
Après avoir joué avec ce problème pendant un certain temps et ne peut pas trouver une solution. J'ai abandonné et je suis maintenant passé au terminal.
ejel
2
n'oubliez pas que iterm2 existe déjà et que tout va bien là-dedans =)
holms

Réponses:

207

Cmd+., Profiles, KeysEt choisissez Left option Key acts as: +Esc.

Fonctionne pour moi dans emacs, même si je ne sais pas si cela aura d'autres effets indésirables.

Sorin
la source
J'ai essayé Option Key as ... avec tous les choix mais aucun d'entre eux ne fonctionne pour moi dans le shell bash. Il ne montre que "?" chaque fois que j'appuie sur la combinaison de touches méta.
ejel
2
Il semble que votre langue d'entrée doit être US pour que l'option + ESC fonctionne. + ESC n'a pas fonctionné pour moi lorsque la méthode de saisie japonais / romaji a été sélectionnée, mais cela a commencé à fonctionner une fois que j'ai basculé la langue d'entrée vers les États
Dominic Cooney
2
Préférences, profil, touches et choisissez l'option gauche. La touche agit comme: + Échap. Ensuite, vous aurez à la fois la touche d'option gauche ET la touche Échap comme clé méta. C'est ce qui s'est passé dans mon cas.
cgl
Avec iTerm 2, cela semble être l'option recommandée.
ejel le
4
Pour mon clavier externe, je devais définir les touches d'option gauche et droite à utiliser Esc+, même si j'utilisais la touche d'option gauche, elle imprimait toujours des caractères étranges. Cela peut se produire car j'utilise l' option Modificateurs de clavier dans les paramètres du clavier Mac pour modifier les touches.
grego
130

Accédez à Favoris> Gérer les profils . Sélectionnez ensuite Profils de clavier> Global et choisissez Option Key comme Meta . Cela fonctionne pour moi dans la version 0.9.6.1201.

Dag Høidahl
la source
2
J'ai dû changer l'entrée xterm (OS X) plutôt que globale, mais cela fonctionne maintenant.
Jason Axelson
Je ne sais pas pourquoi sur ma machine, le paramètre est cassé sur 0.9.6.1201 et plusieurs autres versions que j'ai essayées. Cela fonctionne, cependant, avec la dernière version 0.9.6 et 0.10. Cela ne devrait donc pas être un problème maintenant.
ejel
11
dans iTerm2, cela n'a fonctionné qu'après avoir redéfini les touches de raccourci de profil pour alt+ ->et alt+ <-pour envoyer une séquence d'échappement + f/ brespectivement.
amirnissim
J'ai dû ouvrir une nouvelle session iterm pour qu'elle
démarre
@SridharRatnakumar fonctionne aussi pour iTerm
Krzysztof Wende
31

Dans la barre de menu Iterm2 => Préférences => Profils, choisissez l'onglet touches et sélectionnez

La touche Option gauche agit comme + Echap

entrez la description de l'image ici

a également travaillé pour moi à irssi.

anquegi
la source
Excellent, cela fonctionne également dans la combinaison de iTerm2 + tmux
TheJavaGuy-Ivan Milosavljević
8

Je n'ai pas pu faire fonctionner la touche Alt non plus, mais il existe une solution de contournement qui la fait au moins fonctionner pour la navigation de mots via les touches de curseur:

Passer au mot suivant ou précédent dans iTerm à l'aide de Alt / Option + les touches fléchées gauche ou droite

nyenyec
la source
2
Pour backward-delete-word(⎇-DEL) envoyer un code hexadécimal 0x17, pour sauter au début de l'envoi (⌘- ←) 0x01et pour sauter à la fin (⌘- →) envoyer 0x05.
Lenar Hoyt
5

J'utilise iTerm2 , et pour moi, cette réponse a partiellement résolu mon problème:

Cmd+ ,=> Profils => Touches et choisissez l'option Gauche. La touche agit comme: + Échap .

entrez la description de l'image ici

En plus de cela, j'ai dû aller à Cmd+ ,=> Profiles => Keys et dans la liste Key Mappings trouver les deux combinaisons de touches : entrez la description de l'image icietentrez la description de l'image ici , double-cliquez dessus et modifiez leurs raccourcis comme suit:

entrez la description de l'image ici

entrez la description de l'image ici

* Assurez-vous de sélectionner action Envoyer une séquence d'échappement .

M. Demianchuk
la source
Ceci est vraiment utile. Merci beaucoup mon frère!
LeOn - Han Li
4

Aller toute la résurrection zombie ici, mais pour la postérité -

Ce post a fonctionné comme vous le souhaitez pour moi, pour Mb et Mf, tout en conservant l'option 'Option Key as Meta' définie pour ne pas sacrifier un modificateur (j'ai des mappages vim utilisant meta, personnellement).

En résumé, dans votre profil de clavier global, ajoutez deux nouveaux mappages avec des paramètres:

  1. Clé sous forme de code hexadécimal, valeur de 62 pour b, 66 pour f ( man ascii)
  2. Modificateur en option
  3. Action comme séquence d'échappement d'envoi, valeur b ou f

La seule chose qui me manque encore de Terminal.app est Opt-Backspacede supprimer par mot. Il existe d'autres solutions de contournement pour cela, mais j'essaie juste de m'entraîner à l'utiliser Ctrl-w.

ches
la source
Peut être une nouvelle fonctionnalité depuis cette réponse, mais vous pouvez mapper un raccourci clavier global à envoyer Ctrl-wlorsque vous Opt-Backspaceappuyez sur.
Steve Buzonas
4

C'est plus facile dans iTerm2. Allez dans préférences-> signet-> clavier et sélectionnez Option envoie + ESC. Dans iTerm2, vous pouvez configurer les touches d'option gauche et droite séparément, alors n'oubliez pas de changer les deux si c'est ce que vous voulez. Lien pour iTerm2: http://sites.google.com/site/iterm2home/

George
la source
2

Accédez à Favoris> Gérer les profils. Sélectionnez ensuite Profils de clavier> Global et choisissez Option Key as + ESC.

Fonctionne dans iTerm Build 0.9.5.0611 et Build 0.9.6.20090415


la source
Hmm. Le réglage semble être cassé sur ma machine avec ces deux versions également. Cependant, les derniers 0.9.6.20090928 et 0.10 fonctionnent comme prévu.
ejel
2

J'ai trouvé une solution sur stackoverflow également, allez simplement au profil du clavier et dans "Global" changez la touche Option comme "+ ESC

qui fonctionne parfaitement pour moi =) btw un patch iterm existe également regardez ici: http://www.emacswiki.org/emacs/EmacsForMacOS

holms
la source
0

Essayez "export LANG = C". Je ne suis pas un expert emacs, mais j'ai trouvé que cela permet à emacs sur OS X de reconnaître la touche Option comme clé Meta dans iTerm,


la source
0

Je ne sais pas pour iTerm, mais vous pouvez le faire dans Terminal. Les instructions peuvent être trouvées ici:

Emacs sur les raccourcis clavier de Mac OS X Leopard

Kyle Cronin
la source
Je vous remercie. Je sais que je peux le faire dans Terminal. Je veux juste obtenir le même résultat avec iTerm. Au fait, ce que je recherche, c'est la liaison de touches dans le shell bash, pas dans emacs. Il se trouve que le shell bash utilise également la liaison de clé emacs.
ejel
0

Voici ce qui a fonctionné pour moi: Signets> Gérer les profils> Profils de clavier> Global / xterm> Touche d'option comme + Échap. Avec cela, je peux utiliser Option + Entrée dans Midnight Commander et le nom du fichier / répertoire actuellement sélectionné apparaît dans la chaîne de commande, comme il se doit. La clé d'option comme Meta n'a pas fonctionné pour moi. Ma version d'iTerm est de 0,10.

Mikhail chez YugaByte
la source