web-dev-qa-db-fra.com

iTerm 2: Comment configurer les raccourcis clavier pour sauter au début / à la fin de la ligne?

Je peux voir ça Ctrl+left/right saute au début/à la fin de la ligne. Comment changer cela en Cmd+left/right arrow?

Afin d'obtenir Alt+left/right arrow fonctionne correctement pour Word Saut suivre cet article .

345
chris

Ajoutez dans iTerm2 les touches de raccourci de profil suivantes

FOR  ACTION         SEND
⌘←  "SEND HEX CODE"      0x01 
⌘→  "SEND HEX CODE"      0x05
⌥←  "SEND ESC SEQ"  b
⌥→  "SEND ESC SEQ"  f

Voici un visuel pour ceux qui en ont besoin

iTerm add key visual

645
Matthias

Pour basculer entre les mots et le début/la fin des lignes dans iTerm2, procédez comme suit:

  • iTerm2 -> Préférences ( + ,)
  • Ouvrez l'onglet "Keys"
  • Ajouter les touches de raccourci globales suivantes

Déplace le curseur d'un mot à gauche

  • Combinaison de clavier:  + 
  • Action: Envoyer un code hexadécimal
  • Code: 0x1b 0x62

Déplace le curseur d'un mot à droite

  • Combinaison de clavier:  + 
  • Action: Envoyer un code hexadécimal
  • Code: 0x1b 0x66

Déplace le curseur au début de la ligne

  • Combinaison de clavier:  + 
  • Action: Envoyer un code hexadécimal
  • Code: 0x01

Déplace le curseur à la fin de la ligne

  • Combinaison de clavier:  + 
  • Action: Envoyer un code hexadécimal
  • Code: 0x05

Supprimer Word

  • Combinaison de clavier:  + ←Delete
  • Action: Envoyer un code hexadécimal
  • Code: 0x1b 0x08

Supprimer la ligne

  • Combinaison de clavier:  + ←Delete
  • Action: Envoyer un code hexadécimal
  • Code: 0x15

Annuler

  • Combinaison de clavier:  + z
  • Action: Envoyer un code hexadécimal
  • Code: 0x1f

N'oubliez pas de supprimez les liaisons précédentes:

  • Ouvrez l'onglet “Profils”
  • Cliquez sur le sous-onglet "Clés"
  • Supprimer les mappages pour les combinaisons de touches  +  et  + 
344
sqren

Je vois qu'il y a déjà beaucoup de bonnes réponses, mais cela devrait fournir la fonctionnalité la plus proche possible de la fonctionnalité OSX native dans plus de votre Shell. J'ai vérifié que cela fonctionne dans les sessions ZSH, Bash, noeud, python -i, iex et irb/pry (utilisation de la gem rb-readline pour readline, mais devrait fonctionner pour tout le monde).

Ouvrez les préférences iTerm +, et naviguez vers l’onglet Profiles (l’onglet Keys peut être utilisé, mais l’ajout de raccourcis clavier à votre profil vous permet de enregistrer votre profil et le synchroniser sur plusieurs ordinateurs) et keys sous-onglet et entrez les informations suivantes:

Supprimer tous les caractères restants du curseur

+←Delete Envoyer des codes Hex:

0x15 Plus compatible, mais la fonctionnalité consiste parfois à supprimer la ligne entière plutôt que les seuls caractères à gauche du curseur. Personnellement, je l'utilise et écrase mon bindkey zsh pour ^U afin de ne supprimer que les éléments situés à gauche du curseur (voir ci-dessous).

ou

0x18 0x7f Moins compatible, ne fonctionne pas dans les nœuds et ne fonctionne pas dans zsh par défaut, voir ci-dessous pour réparer zsh (bash/irb/pry devrait être correct), exécute la fonctionnalité souhaitée lorsque cela fonctionne.

Supprimer tous les caractères à droite du curseur

+fn+←Delete ou +Delete→ Envoyer des codes hexadécimaux: 0x0b

Supprimer un mot à gauche du curseur

+←Delete Envoyer des codes Hex:

0x1b 0x08 Les ruptures d'IEX d'Elixir semblent bien fonctionner partout ailleurs

ou

0x17 Fonctionne partout, mais ne s'arrête pas aux ruptures normales de Word dans IRB, mais supprimera jusqu'à ce qu'il voie un espace littéral.

Supprimer un mot à la droite du curseur

+fn←Delete ou +Delete→ Envoyer des codes hexadécimaux: 0x1b 0x64

Déplacer le curseur au début de la ligne

+ Envoyer des codes hexadécimaux: 0x01

Déplace le curseur à la fin de la ligne

+ Envoyer des codes hexadécimaux: 0x05

Déplacer le curseur d'un mot à gauche

+ Envoyer des codes hexadécimaux: 0x1b 0x62

Déplacer le curseur d'un mot à droite

+ Envoyer des codes hexadécimaux: 0x1b 0x66

Undo

+z Envoyer des codes hexadécimaux: 0x1f

Refaire généralement pas lié dans bash, zsh ou readline, nous pouvons donc le définir sur un hexcode inutilisé que nous pourrons ensuite corriger dans zsh

++Z ou +y Envoyer des codes hexadécimaux: 0x18 0x1f

Maintenant, comment réparer ceux qui ne fonctionnent pas

Pour zsh, vous pouvez configurer la liaison pour le pas encore fonctionnel +←Delete et ++Z/+y en exécutant:

# changes hex 0x15 to delete everything to the left of the cursor,
# rather than the whole line
$ echo 'bindkey "^U" backward-kill-line' >> ~/.zshrc

# binds hex 0x18 0x7f with deleting everything to the left of the cursor
$ echo 'bindkey "^X\\x7f" backward-kill-line' >> ~/.zshrc

# adds redo
$ echo 'bindkey "^X^_" redo' >> ~/.zshrc

# reload your .zshrc for changes to take effect
$ source ~/.zshrc

Je ne parviens pas à trouver de solution pour ajouter redo dans bash ou readline. Si quelqu'un connaît une solution pour l'un de ces problèmes, veuillez commenter ci-dessous et j'essaierai de l'ajouter.

Pour ceux qui recherchent une table de conversion sur la façon de convertir des séquences de clés en hexadécimal, je trouve cette table très utile.

229
Travis

Suivez le tutoriel que vous avez énuméré ci-dessus pour configurer vos préférences de clé dans iterm2 .

  1. Créer une nouvelle clé de raccourci
  2. Choisissez "Envoyer la séquence d'échappement" comme action
  3. Ensuite, pour définir cmd-left , dans le texte ci-dessous:
    • Entrer [H pour début de ligne
      OU
    • Entrer [F pour fin de ligne
46
Jaime Bellmyer

Dans iTerm 3.0.12, vous pouvez basculer sur Natural Text Editing préréglé:

enter image description here

iTerm → Préférences → Profils → Touches

Avertissement Comme il s'agit d'un préréglage, il peut remplacer les clés que vous aviez liées auparavant. Il est donc préférable de sauvegarder vos raccourcis clavier avant d’appliquer un préréglage.

35
Nik Kov

Pour une référence rapide à toute personne souhaitant aller à la fin ou au début de la ligne dans iTerm2, cliquez sur le lien ci-dessus http://hackaddict.blogspot.com/2007/07/skip-to-next-or- previous-Word-in-iterm.html remarque que dans iTerm2:

  • Ctrl+A, saute au début de la ligne, tandis que
  • Ctrl+E, saute au bout de la ligne.
12
Ioannis Filippidis

Juste pour aider ceux qui ont le même problème mais qui utilisent spécifiquement Zsh Shell avec iTerm 2. Il s'avère que Zsh ne lit pas /etc/inputrc correctement , et ne comprend donc pas de clé les liaisons que vous avez configurées dans les préférences!

Pour résoudre ce problème, vous devez ajouter des liaisons de clé à votre fichier .zshrc, telles que:

# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line

Notez les barres obliques inversées dans l'exemple ci-dessus avant le "e", l'article lié ne les affichant pas, ajoutez-les donc dans votre fichier .zshrc lors de l'ajout de liaisons.

8
Nerdwood

J'ai utilisé Travis answer et j'ai créé un profil dynamique que vous pouvez importer en fonction de ses instructions.

GabLeRoux/iterm2-profil-dynamique-macos

Les instructions figurent dans le fichier Lisez-moi et il est beaucoup plus rapide d'importer ces informations que de les ajouter toutes manuellement. J'ai fait une réponse à la demande de @ gooli parce que cela était caché dans un commentaire. J'espère que vous apprécierez cette ????

8
GabLeRoux

Les anciennes liaisons emacs peuvent toujours fonctionner dans iterm2 et os x terminal:

Préférences -> Profils -> Clés (sous-onglet dans les profils)

  • Set Left/Right option <kbd>⌥</kbd> key acts as +Esc (similaire dans os x terminal)

Cela devrait permettre alt-f et alt-b pour déplacer des mots par des mots. (Encore ctrl-a et ctrl-e travaille toujours comme d'habitude)

Si elle est définie sur meta, ces anciennes liaisons fonctionneront tant que certaines liaisons iterm2 ne seront pas disponibles.

4
halfelf

Les seules choses qui fonctionnent pour aller au début et à la fin de la ligne sont

⌘← "SEND ESC SEQ" OH - pour aller au début de la ligne
⌘→ "SEND ESC SEQ" OF - pour aller à la fin de la ligne

2
add787

Comme expliqué dans ici , vous pouvez le faire en quelques étapes simples:

Par défaut, les sauts Word (option + → ou ←) et les suppressions Word (option + retour arrière) ne fonctionnent pas. Pour les activer, allez dans "iTerm → Préférences → Profils → Touches → Charger le préréglage ... → Édition de texte naturel → Boom! La tête explose"

1
Islam.Ibrahim

bind -p affichera une liste des clés échappées liées dans votre Shell, ce qui peut vous aider à vous donner plus d'idées/termes de recherche.

1
Jose Alban

expliqué dans https://aaronaddleman.com/articles/hexcodes-and-iterm/

vous pouvez utiliser xxd -psd pour obtenir le code hexadécimal.

1
Zitao Xiong

Pour moi, la combinaison suivante a fonctionné:
| Key Action Esc+ End result | |-----------------------------------------------------| | Send Escape Sequence a Send ^[ a | | Send Escape Sequence e Send ^[ e |

0
Halil Özgür