Remappage des clés dans iterm2


15

J'essaie de remapper certaines des combinaisons de touches par défaut dans iTerm2, et j'aimerais comprendre ce qui se passe lorsque je lie des clés à "Envoyer des codes hexadécimaux".

Un article précédent m'a aidé à commencer à remapper les combinaisons de touches ctrl-a et ctrl-e en cmd-gauche et cmd-droite, respectivement, mais je voudrais également remapper d'autres combinaisons de touches. ( Lien vers le post précédent de Stackoverflow ).

J'ai une vague compréhension qu'il y a des codes hexadécimaux impliqués, mais je suis à un point où je ne peux pas comprendre où aller ensuite pour comprendre ce qui se passe ou quoi faire.


N'a rien à voir avec bash. Balise supprimée.

Réponses:


16

Ces codes hexadécimaux ne sont que des séquences d'octets. Par exemple, mapper une combinaison de touches pour la 0x66 0x6f 0x6ffaire insérer foo. 0xc3 0xa4insérerait ä si vous utilisez UTF-8. 0x1b 0x1b 0x5b 0x43signifie escape escape [ C.

Certaines séquences d'octets comme les séquences d'échappement ANSI et même les octets uniques comme les caractères de contrôle ASCII ont des significations spéciales dans les terminaux.

Pour faire passer ⌘ ← et ⌘ → au début et à la fin de la ligne, vous pouvez les affecter à 0x01 (^ A en notation caret) et 0x05 (^ E en notation caret):

  • ⌘ ←: Envoyer des codes hexadécimaux: 0x01
  • ⌘ →: envoyer des codes hexadécimaux: 0x05

Vous pouvez faire ⌥⌦ supprimer un mot en avant en l'attribuant à \ed:

  • ⌥⌦: Envoyer ^ [d

Changer ⌥ ← et ⌥ → vers \ebet \efdans les préférences d'iTerm les changerait également dans les programmes qui ne prennent pas en charge les raccourcis clavier readline ou emacs. Une autre option consiste à ajouter ceci à ~ / .inputrc :

"\e\e[D": backward-word
"\e\e[C": forward-word

Vous pouvez exécuter readet appuyer sur des combinaisons de touches pour voir quels caractères ils insèrent. Par exemple, ⌥ ← insère ^[^[[Dpar défaut, où ^[est escape en notation caret .

Voir également http://code.google.com/p/iterm2/wiki/Keybindings .


Merci. Je rencontre cette réponse lors de la recherche d'une solution à ma question ici . Comment puis-je rechercher le code hexadécimal pour une combinaison de touches spécifique? (dans mon cas , je suis intéressé par les combinaisons Ctrl+Alt+<char>avec <char>être i, j, k, let u)
Amelio Vazquez-Reina

6

Je vous suggère d'installer des codes clés (0 $) par Many Tricks et de découvrir les raccourcis par vous-même.

Par exemple, si vous souhaitez remapper le raccourci par défaut pour (en avant) supprimer un caractère - qui est Ctrl-D ( ⌃D) - pour être aussi simple que d'appuyer sur la touche de suppression en avant ( ), vous feriez ...

  1. Ouvrez l'application et appuyez sur Ctrl-D

    Exemple de codes clés

  2. De retour dans iTerm 2, ajoutez le raccourci Unicode dans iTerm> Préférences> Clés

    iTerm Send Hex Codes

Remarque: ne le copiez pas et ne le collez pas, saisissez simplement l'Unicode sans espaces.


2

La meilleure façon que j'ai trouvée était soit d'envoyer des codes clés (comme décrit par @pattulus ou d'utiliser des raccourcis clavier vim.

Remarque sur les codes clés: en fait, vous ne pouvez pas le faire fonctionner en envoyant la chaîne unicode comme décrit ci-dessus, vous devez envoyer à la fois le modificateur et la clé en cas de Control+ Dvous devez envoyer cela comme code: 0x840101 0x40x840101est le modificateur de la touche de contrôle et peut être obtenu via Key Code .

Remarque sur l'envoi en tant que séquence vim : Comme décrit dans la documentation iTerm2 , vous pouvez envoyer un code clé au format vim-bindings tel que \<C-d>pour l'envoi Control+ D(notez que \c'est important).

Personnellement, je préfère la liaison de clés vim car elle est plus lisible et vous comprendrez plus tard ce que vous avez fait.


1

Découvrez Karabiner .

Dans cet outil, vous pouvez créer des mappages personnalisés clés spécifiques aux applications. Il est livré avec quelques outils pour vous aider.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.