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 .
Pour basculer entre les mots et le début/la fin des lignes dans iTerm2, procédez comme suit:
Déplace le curseur d'un mot à gauche
0x1b 0x62
Déplace le curseur d'un mot à droite
0x1b 0x66
Déplace le curseur au début de la ligne
0x01
Déplace le curseur à la fin de la ligne
0x05
Supprimer Word
0x1b 0x08
Supprimer la ligne
0x15
Annuler
0x1f
N'oubliez pas de supprimez les liaisons précédentes:
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 ailleursou
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.
Suivez le tutoriel que vous avez énuméré ci-dessus pour configurer vos préférences de clé dans iterm2 .
Dans iTerm 3.0.12, vous pouvez basculer sur Natural Text Editing
préréglé:
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.
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:
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.
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 ????
Les anciennes liaisons emacs peuvent toujours fonctionner dans iterm2 et os x terminal:
Préférences -> Profils -> Clés (sous-onglet dans les profils)
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.
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
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"
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.
expliqué dans https://aaronaddleman.com/articles/hexcodes-and-iterm/
vous pouvez utiliser xxd -psd
pour obtenir le code hexadécimal.
Pour moi, la combinaison suivante a fonctionné:
| Key Action Esc+ End result | |-----------------------------------------------------| | ⌘← Send Escape Sequence a Send ^[ a | | ⌘→ Send Escape Sequence e Send ^[ e |