Je peux voir que Ctrl+ left/ rightsaute au début / fin de la ligne. Comment changer cela en Cmd+ left/ right arrow?
Pour que Alt+ left/ right arrowfonctionne correctement pour le saut de mots, suivez cet article .
Je peux voir que Ctrl+ left/ rightsaute au début / fin de la ligne. Comment changer cela en Cmd+ left/ right arrow?
Pour que Alt+ left/ right arrowfonctionne correctement pour le saut de mots, suivez cet article .
Réponses:
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
⌘← "SEND ESC SEQ" OH
pour Home et ⌘→ "SEND ESC SEQ" OF
pour End (ce sont des o non majuscules et non des zéros). Cela simule en fait d'appuyer sur les touches Début et Fin, et en tant que tel, cela fonctionnera dans bash, vim, etc.
Pour sauter entre les mots et le début / fin des lignes dans iTerm2, choisissez l' une des deux solutions ci-dessous.
Si vous ne souhaitez pas utiliser le préréglage "Modification de texte naturel" mentionné ci-dessus, vous pouvez mapper manuellement les touches dont vous avez besoin:
[+]
iconeDéplacer le curseur d'un mot vers la gauche
0x1b 0x62
Déplacer le curseur d'un mot vers la droite
0x1b 0x66
Déplacer le curseur au début de la ligne
0x01
Déplacer le curseur à la fin de la ligne
0x05
Supprimer le mot
0x1b 0x08
Supprimer la ligne
0x15
annuler
0x1f
N'oubliez pas de supprimer les liaisons précédentes :
Says send Hex Codes: 0x1b 0x1b 0x5b 0x44
. Ce serait bien de savoir si les gens ne voulaient pas supprimer cela.
Je vois qu'il y a déjà beaucoup de bonnes réponses, mais cela devrait fournir la fonctionnalité OSX native 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 à l' Profiles
onglet (l' Keys
onglet peut être utilisé, mais l'ajout de raccourcis clavier à votre profil vous permet d' enregistrer votre profil et de le synchroniser sur plusieurs ordinateurs) et keys
sous-onglet et entrez les éléments suivants:
Supprimer tous les caractères à gauche du curseur
⌘+ ←DeleteEnvoyer des codes hexadécimaux:
0x15
Plus compatible, mais la fonctionnalité consiste parfois à supprimer la ligne entière plutôt que seulement les caractères à gauche du curseur. Personnellement, j'utilise ceci et écrase ensuite ma bindkey zsh pour^U
supprimer uniquement les éléments à 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 bien), exécute les fonctionnalités souhaitées lorsqu'il fonctionne.
Supprimer tous les caractères à droite du curseur
⌘+ fn+ ←Deleteou ⌘+ Delete→Envoyer des codes hexadécimaux:
0x0b
Supprimer un mot à gauche du curseur
⌥+ ←DeleteEnvoyer des codes hexadécimaux:
0x1b 0x08
Les ruptures dans IEX d'Elixir semblent bien fonctionner partout ailleursou
0x17
Fonctionne partout, mais ne s'arrête pas aux sauts de mots normaux dans IRB et supprimera à la place jusqu'à ce qu'il voit un espace littéral.
Supprimer un mot à droite du curseur
⌥+ fn←Deleteou ⌥+ 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éplacer le curseur à la fin de la ligne
⌘+ →Envoyer des codes hexadécimaux:
0x05
Déplacer le curseur d'un mot vers la gauche
⌥+ ←Envoyer des codes hexadécimaux:
0x1b 0x62
Déplacer le curseur d'un mot vers la droite
⌥+ →Envoyer des codes hexadécimaux:
0x1b 0x66
annuler
⌘+ zEnvoyer des codes hexadécimaux:
0x1f
Rétablir généralement pas lié en bash, zsh ou readline, nous pouvons donc le définir sur un hexcode inutilisé que nous pouvons ensuite corriger dans zsh
⇧+ ⌘+ Zou ⌘+ yEnvoyer des codes hexadécimaux:
0x18 0x1f
Maintenant, comment réparer ceux qui ne fonctionnent pas
Pour zsh, vous pouvez configurer la liaison pour les ⌘+ ←Deleteet ⇧+ ⌘+ Z/ ⌘+ pas encore fonctionnels yen 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 peux pas trouver de 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 j'essaierai de les ajouter.
Pour tous ceux qui recherchent la table de recherche sur la façon de convertir des séquences de touches en hexadécimal, je trouve cette table très utile.
$
devant echo
(simplement le retirer?). A part ça, c'est parfait. Je vous remercie.
bindkey | grep "\^\[b"
et cela vous dira si quelque chose d'autre le remplace après qu'il ait été défini. Il devrait seulement revenir #=> "^[b" backward-word
. S'il est écrasé, vous devrez trouver où il est écrasé et le supprimer. Si ce n'est pas possible, vous pouvez l'exécuter echo 'bindkey "^[b" backward-word' >> ~/.zshrc
l'ajoutera à la dernière ligne de votre .zshrc
, puis redémarrez iTerm et cela devrait fonctionner
keys
onglet dans les préférences iTerm pour voir si c'est aussi un mapping ⌥
+ ←
vers quelque chose. Si c'est le cas, retirez-le. Vous pouvez tester si votre b
fonctionne correctement en appuyant rapidement sur esc
relâchement, puis sur b
. Cela devrait sauter un mot vers la gauche. Alternativement, vous pouvez mapper ⌥
+ ←
à hex 0x1b 0x42
ou 0x1b 0x5b 0x31 0x3b 0x35 0x44
. J'ai vérifié que ces deux éléments fonctionnent pour moi. Je pense vraiment que vous avez ⌥
+ ←
été écrasé dans iTerm, que ce soit dans votre profile
keys
onglet ou votre keys
onglet.
Suivez le didacticiel que vous avez indiqué ci-dessus pour configurer vos préférences clés dans iterm2 .
Dans iTerm 3.0.12, vous pouvez passer au 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 de sauvegarder vos raccourcis clavier actuels avant d'appliquer un préréglage.
Pour une référence rapide de toute personne qui souhaite aller en fin de ligne ou en début de 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:
J'ai utilisé Travis answer et j'ai créé un profil dynamique que vous pouvez importer en fonction de ses instructions.
GabLeRoux / iterm2-macos-dynamic-profile
Les instructions sont dans le fichier lisez-moi et il est beaucoup plus rapide d'importer cela que de les ajouter toutes manuellement. J'en ai fait une réponse conformément à la demande de @ gooli car cela était caché dans un commentaire. J'espère que vous apprécierez cela 🍻
Juste pour aider toute personne ayant le même problème mais utilisant spécifiquement le shell Zsh avec iTerm 2. Il s'avère que Zsh ne lit pas /etc/inputrc
correctement et ne parvient donc pas à comprendre les liaisons de touches que vous avez définies via les préférences!
Pour résoudre ce problème, vous devez ajouter des raccourcis clavier à votre .zshrc
fichier, tels que:
# 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 .zshrc
fichier lors de l'ajout de liaisons.
Les liaisons emacs à l'ancienne peuvent toujours fonctionner dans les terminaux iterm2 et os x:
Préférences -> Profils -> Clés (sous-onglet dans les profils)
Left/Right option <kbd>⌥</kbd> key acts as +Esc
(similaire dans le terminal os x)Cela devrait permettre alt- fet alt- bde déplacer les mots par mots. (Toujours ctrl- aet ctrl- etoujours travailler comme d'habitude)
Si elles sont définies, meta
ces anciennes liaisons fonctionneront alors que certaines liaisons iterm2 ne seront pas disponibles.
Comme l'explique ici , vous pouvez le faire en quelques é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 → Clés → Charger le préréglage ... → Édition de texte naturel → Boom! La tête explose"
bind -p
affichera une liste de clés d'échappement liées dans votre shell, ce qui pourrait vous donner plus d'idées / termes de recherche.
bind -p
ne fonctionne que dans les shells Bourne (bash, sh) pour zsh, csh tcsh, use bindkey
.
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 |