iTerm 2: Comment définir des raccourcis clavier pour passer au début / fin de ligne?
Je peux voir que Ctrl+de gauche/droit saute au début/à la fin de la ligne. Comment changer Cmd+de gauche/flèche droite?
Pour obtenir Alt+de gauche/flèche droite travailler correctement pour que le mot de saut à suivre cet article.
12 réponses
Ajouter 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
Pour sauter entre les mots et le début / fin des lignes dans iTerm2, procédez comme suit:
- iTerm2 -> Préférences (⌘ + ,)
- Ouvrez l'onglet "Clés"
- ajoutez les touches de raccourci globales suivantes
Déplacer le curseur d'un mot à gauche
- Combinaison De Clavier: ⌥ + ←
- Action: Envoyer Le Code Hexadécimal
- Code:
0x1b 0x62
Déplacer le curseur d'un mot droit
- Combinaison De Clavier: ⌥ + →
- Action: Envoyer Le Code Hexadécimal
- Code:
0x1b 0x66
Déplacer le curseur au début de la ligne
- Combinaison De Clavier: ⌘ + ←
- Action: Envoyer Le Code Hexadécimal
- Code:
0x01
Déplacer le curseur à la fin de la ligne
- Combinaison De Clavier: ⌘ + →
- Action: Envoyer Hex Code
- Code:
0x05
Supprimer le mot
- Combinaison De Clavier: ⌥ + ←Supprimer
- Action: Envoyer Le Code Hexadécimal
- Code:
0x1b 0x08
Supprimer la ligne
- Combinaison De Clavier: ⌘ + ←Supprimer
- Action: Envoyer Le Code Hexadécimal
- Code:
0x15
Annuler
- Combinaison De Clavier: ⌘ + z
- Action: Envoyer Le Code Hexadécimal
- Code:
0x1f
N'oubliez pas de supprimer le précédent liaisons:
- Ouvrez l'onglet "Profils"
- Cliquez sur le sous-onglet "Clés"
- Supprimer les mappages pour les combinaisons de touches ⌥ + ← et ⌥ + →
Je vois qu'il y a déjà beaucoup de bonnes réponses, mais cela devrait fournir la fonctionnalité OSX la plus proche possible dans plus que votre shell. J'ai vérifié que cela fonctionne dans les sessions ZSH, Bash, node, python-i, iex et irb/pry (en utilisant RB-readline gem pour readline, mais devrait fonctionner pour tous).
Ouvrez les préférences iTerm ⌘+, et accédez à la Profiles
onglet (la Keys
onglet peut être utilisé, mais l'ajout de raccourci clavier de votre profil vous permet de enregistrer votre profil et synchronisez-le sur plusieurs ordinateurs) et keys
sous-onglet et entrez ce qui suit:
Supprimer tous les caractères à gauche du curseur
⌘+←Supprimer Envoyer Des Codes Hex:
0x15
Plus compatible, mais la fonctionnalité consiste parfois à supprimer toute la ligne plutôt que les caractères à gauche du curseur. Personnellement, je l'utilise, puis j'écrase mon bindkey zsh pour^U
pour supprimer uniquement les choses à gauche du curseur (voir ci-dessous).ou
0x18 0x7f
Moins compatible, ne fonctionne pas dans le nœud et ne fonctionnera pas dans zsh par défaut, voir ci-dessous pour corriger zsh (bash / irb/pry devrait être correct), effectue la fonctionnalité désirée quand cela fonctionne.
Supprimer tous les caractères à droite du curseur
⌘+fn+←Supprimer ou ⌘+Supprimer→ Envoyer des Codes Hex:
0x0b
Supprimer un mot à gauche du curseur
⌥+←Supprimer Envoyer Des Codes Hex:
0x1b 0x08
les pauses dans L'IEX D'Elixir, semble bien fonctionner partout ailleursou
0x17
fonctionne partout, mais ne s'arrête pas aux pauses de mots normales dans IRB et va plutôt supprimer jusqu'à ce qu'il voit un espace littéral.
Supprimer un mot à droite du curseur
⌥+fn←Supprimer ou ⌥+Supprimer→ Envoyer Des Codes Hex:
0x01b 0x64
Déplacer le curseur à l'avant de la ligne
⌘+← Envoyer Des Codes Hex:
0x01
Déplacer le curseur à la fin de la ligne
⌘+→ Envoyer Des Codes Hex:
0x05
Déplacer le curseur d'un mot à gauche
⌥+← Envoyer Des Codes Hex:
0x1b 0x62
bouge curseur un mot droit
⌥+→ Envoyer Des Codes Hex:
0x1b 0x66
Annuler
⌘+z Envoyer des Codes Hex:
0x1f
refaire généralement pas lié dans bash, zsh ou readline, donc nous pouvons le définir à un hexcode inutilisé que nous pouvons ensuite corriger dans zsh
⇧+⌘+Z ou ⌘+y Envoyer des Codes Hex:
0x18 0x1f
Maintenant comment réparer tout ce qui ne travail
Pour zsh, vous pouvez configurer la liaison pour le non encore fonctionnel ⌘+←Supprimer 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 suis incapable de trouver une solution pour ajouter redo dans bash ou readline, donc si quelqu'un connaît une solution pour l'un ou l'autre, veuillez commenter ci-dessous et je vais essayer de les ajouter.
Pour tous ceux qui recherchent la table de recherche sur comment convertir des séquences de clés en hexadécimal, je trouve cette table très utile.
Suivez le tutoriel que vous avez énuméré ci-dessus pour configurer vos préférences de clé dans iterm2.
- Créer une nouvelle clé de raccourci
- Choisissez "envoyer une séquence d'échappement" comme action
- , Puis, à l'ensemble cmd-gauche, dans le texte ci-dessous qui:
- Entrer [H pour ligne de départ
OU - Entrer [F pour fin de ligne
- Entrer [H pour ligne de départ
Dans iTerm 3.0.12, vous pouvez passer à Natural Text Editing
préréglage:
ITerm → Préférences → Profils → Clés
Avertissement Comme il s'agit d'un préréglage, il peut remplacer les clés que vous avez liées auparavant. Il est donc préférable d'enregistrer vos raccourcis clavier actuels avant d'appliquer un préréglage.
Pour une référence rapide de quiconque veut aller à la fin de la ligne ou au début de la ligne dans iTerm2, le lien ci-dessus http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word-in-iterm.html note que dans iTerm2:
- Ctrl+Un, saute au début de la ligne, tandis que
- Ctrl+E, sauts à la fin de la ligne.
Juste pour aider quiconque a le même problème mais utilise spécifiquement le shell Zsh avec iTerm 2. Il s'avère que Zsh ne lit pas /etc/inputrc
correctement , et ne comprend donc pas les liaisons de clés que vous avez configurées via les préférences!
Pour résoudre ce problème, vous devez ajouter des raccourcis à votre .zshrc
fichier, par exemple:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
Notez les barres obliques inverses dans l'exemple ci-dessus avant le "e", l'article lié ne les affiche pas, alors ajoutez-les dans votre fichier .zshrc
lors de l'ajout contraignant.
Les liaisons Emacs à l'ancienne peuvent toujours fonctionner dans iterm2 et OS X terminal:
Préférences - > profils - > clés (sous-onglet dans les profils)
- définir
Left/Right option <kbd>⌥</kbd> key acts as +Esc
(similaire dans le terminal os x)
Cela devrait permettre alt-f et alt-b pour déplacer des mots par des mots. (Encore ctrl-un et ctrl-e toujours travailler comme d'habitude)
Si défini comme meta
ces anciennes liaisons fonctionneront alors que certains iterm2 liaisons indisponibles.
bind -p
montrera une liste de clés échappées liées dans votre shell, qui pourrait vous aider à vous donner plus d'idées / termes de recherche.
Comme expliqué dans ici , Vous pouvez le faire avec des étapes simples:
Par défaut, les sauts de mots (option + → ou←) et les suppressions de mots (option + retour arrière) ne fonctionnent pas. Pour les activer, allez dans "iTerm → Préférences → Profils → Touches → Charge Prédéfinie... → Édition De Texte Naturel → Boom! Tête explose"
Expliqué dans https://aaronaddleman.com/articles/hexcodes-and-iterm/
Vous pouvez utiliser xxd -psd
pour obtenir le code hexadécimal clé.
Pour moi, la combinaison suivante a fonctionné:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |