Savez-vous quel est le code / la séquence pour Command + Delete? (effacer l'invite)
Steven Lu
10
J'ai répondu à mon premier commentaire ailleurs, essentiellement le code hexadécimal 0x15 donne Ctrl + U qui efface la ligne. Cependant, je trouve 0x01 Ctrl + A pour interférer avec l'utilisation de Tmux. Par conséquent, j'ai l'intention de le mapper à la place sur la touche Accueil (même fonctionnalité que Fn + Left sur un clavier Mac).
Steven Lu
7
La séquence d'échappement pour Home est [1 ~ et la séquence d'échappement pour End est [4 ~
Steven Lu
3
Fonctionne comme un charme, génial!
Juto
25
La liaison correcte est ⌘← "SEND ESC SEQ" OHpour Home et ⌘→ "SEND ESC SEQ" OFpour 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.
Timothy Zorn
433
Pour sauter entre les mots et le début / fin des lignes dans iTerm2, choisissez l' une des deux solutions ci-dessous.
1. Solution simple (recommandée)
Ouvrir les préférences
Cliquez sur l'onglet "Profil"
Sélectionnez un profil dans la liste de gauche (par exemple "Par défaut") et cliquez sur l'onglet "Clés"
Cliquez sur le menu déroulant "Presets" et sélectionnez "Natural Text Editing"
2. Mappage des clés manuellement (avancé)
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:
Ouvrir les préférences
Cliquez sur l'onglet «Clés»
Cliquez sur l' [+]icone
Vous pouvez maintenant ajouter les raccourcis clavier suivants:
Déplacer le curseur d'un mot vers la gauche
Raccourci clavier: ⌥+←
Action: envoyer le code hexadécimal
Code: 0x1b 0x62
Déplacer le curseur d'un mot vers la droite
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 le code hexadécimal
Code: 0x05
Supprimer le mot
Combinaison de clavier: ⌥+←Delete
Action: envoyer le code hexadécimal
Code: 0x1b 0x08
Supprimer la ligne
Combinaison de clavier: ⌘+←Delete
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 les liaisons précédentes :
Ouvrez l'onglet «Profils»
Cliquez sur le sous-onglet "Clés"
Supprimez les mappages des combinaisons de touches ⌥+ ←et ⌥+→
Cela a bien fonctionné pour moi dans iTerm2 et était très facile à suivre, merci!
Natetronn
3
Simplement clarifier à quoi servent les fixations originales pour ⌥ ←? Je le vois Says send Hex Codes: 0x1b 0x1b 0x5b 0x44. Ce serait bien de savoir si les gens ne voulaient pas supprimer cela.
août
5
Passer au début et à la fin de la ligne n'a pas fonctionné pour moi en utilisant zsh. L'utilisation de "Hex Code" "0x01" / "0x05", comme suggéré par la réponse du haut, a fonctionné pour moi.
Retournez
2
Passer au début et à la fin de la ligne n'a pas fonctionné pour moi aussi. La meilleure réponse a fonctionné.
hisabimbola
3
ITerm a-t-il un moyen de les regrouper dans un préréglage que nous pouvons simplement charger? Semble ennuyeux de taper manuellement mais cela a fonctionné pour moi et était génial. Merci un lto!
août
259
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' Profilesonglet (l' Keysonglet 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 keyssous-onglet et entrez les éléments suivants:
Supprimer tous les caractères à gauche du curseur
⌘+ ←DeleteEnvoyer des codes hexadécimaux:
0x15Plus 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 ^Usupprimer uniquement les éléments à gauche du curseur (voir ci-dessous).
ou
0x18 0x7fMoins 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 ailleurs
ou
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.
C'est vraiment utile, ça fait beaucoup de différence! Je voudrais souligner que certaines personnes peuvent se confondre avec le $devant echo(simplement le retirer?). A part ça, c'est parfait. Je vous remercie.
edmundo
1
@Christophe Il semble donc que le raccourci clavier soit là comme il se doit. Soit vous avez fait une erreur en ajoutant les valeurs hexadécimales, soit la liaison de touches pour le mot en arrière est écrasée. Exécutez 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' >> ~/.zshrcl'ajoutera à la dernière ligne de votre .zshrc, puis redémarrez iTerm et cela devrait fonctionner
Travis
2
@Christophe vérifie l' keysonglet 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 bfonctionne correctement en appuyant rapidement sur escrelâchement, puis sur b. Cela devrait sauter un mot vers la gauche. Alternativement, vous pouvez mapper ⌥+ ←à hex 0x1b 0x42ou0x1b 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 profilekeysonglet ou votre keysonglet.
Travis
3
Incroyable! Je viens d'apprendre les liaisons Annuler et Rétablir d'ici.
ecbrodie
3
Je l'ai fait manuellement dans et j'ai pensé pourquoi ne puis-je pas importer un profil pour ce faire? J'ai ensuite créé GabLeRoux / iterm2-macos-dynamic-profile sur la base de ces instructions. Cela fonctionne parfaitement, merci 🍻
GabLeRoux
48
Suivez le didacticiel que vous avez indiqué ci-dessus pour configurer vos préférences clés dans iterm2 .
Créer une nouvelle clé de raccourci
Choisissez "Envoyer la séquence d'échappement" comme action
Ensuite, pour définir cmd-left , dans le texte ci-dessous:
Aime ça! les autres solutions n'ont pas fonctionné pour moi. Je passe des heures frustré de ne pas pouvoir utiliser ctrl + a et ctrl + e dans iterm2. Mais je ne voulais pas abandonner le poisson pour ça. Cela fonctionne totalement merci!
FLY
D'autres solutions n'ont pas fonctionné pour moi non plus, mais celle-ci a fonctionné.
Braham Snyder du
42
Dans iTerm 3.0.12, vous pouvez passer au Natural Text Editingpré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.
Pourriez-vous élaborer davantage votre réponse? Comme dans, ce que ce préréglage inclut et pourrait remplacer?
Carles Alcolea,
Merci d'avoir répondu. Il est également préférable de l'appliquer à votre propre profil personnalisé de façon à ne pas visser avec les valeurs par défaut et à basculer le profil en tant que "mode" d'édition de texte naturel
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 🍻
Je suis revenu ici un an plus tard et si heureux de le trouver!
elifiner
9
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/inputrccorrectement 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 .zshrcfichier, tels que:
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 .zshrcfichier lors de l'ajout de liaisons.
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"
Pour moi, la combinaison suivante a fonctionné:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |
Réponses:
Ajoutez dans iTerm2 les touches de raccourci de profil suivantes
Voici un visuel pour ceux qui en ont besoin
la source
⌘← "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.
1. Solution simple (recommandée)
2. Mappage des clés manuellement (avancé)
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:
[+]
iconeVous pouvez maintenant ajouter les raccourcis clavier suivants:
Dé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 :
la source
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) etkeys
sous-onglet et entrez les éléments suivants:Supprimer tous les caractères à gauche du curseur
Supprimer tous les caractères à droite du curseur
Supprimer un mot à gauche du curseur
Supprimer un mot à droite du curseur
Déplacer le curseur au début de la ligne
Déplacer le curseur à la fin de la ligne
Déplacer le curseur d'un mot vers la gauche
Déplacer le curseur d'un mot vers la droite
annuler
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
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:
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.
la source
$
devantecho
(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écuterecho 'bindkey "^[b" backward-word' >> ~/.zshrc
l'ajoutera à la dernière ligne de votre.zshrc
, puis redémarrez iTerm et cela devrait fonctionnerkeys
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 votreb
fonctionne correctement en appuyant rapidement suresc
relâchement, puis surb
. Cela devrait sauter un mot vers la gauche. Alternativement, vous pouvez mapper⌥
+←
à hex0x1b 0x42
ou0x1b 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 votreprofile
keys
onglet ou votrekeys
onglet.Suivez le didacticiel que vous avez indiqué ci-dessus pour configurer vos préférences clés dans iterm2 .
OU
la source
Dans iTerm 3.0.12, vous pouvez passer au
Natural Text Editing
préréglage: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.
la source
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:
la source
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 🍻
la source
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: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.la source
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.la source
Comme l'explique ici , vous pouvez le faire en quelques étapes simples:
la source
Les seules choses qui fonctionnent pour passer au début et à la fin de la ligne sont
⌘← "SEND ESC SEQ" OH
- pour passer au début de la ligne⌘→ "SEND ESC SEQ" OF
- pour passer à la fin de la lignela source
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.la source
bind -p
ne fonctionne que dans les shells Bourne (bash, sh) pour zsh, csh tcsh, usebindkey
.expliqué dans https://aaronaddleman.com/articles/hexcodes-and-iterm/
vous pouvez utiliser
xxd -psd
pour obtenir le code hexadécimal clé.la source
Pour moi, la combinaison suivante a fonctionné:
| Key Action Esc+ End result | |-----------------------------------------------------| | ⌘← Send Escape Sequence a Send ^[ a | | ⌘→ Send Escape Sequence e Send ^[ e |
la source