Comment obtenir le contrôle + flèche vers la gauche pour revenir en arrière d'un mot dans iTerm2?

114

J'étais en train de lire dans le manuel Linux et j'ai remarqué qu'il était dit que je pouvais utiliser les touches control + left et control + right pour avancer et reculer dans le terminal tout en modifiant le texte.

"Appuyer sur Ctrl et sur les touches fléchées gauche ou droite permet d'avancer ou de reculer d'un mot à la fois, tout comme l'appui sur Échap, puis sur B ou F."

Sur OS X control+leftet control+rightnormalement contrôler les espaces. J'ai désactivé ceux-ci. J'ai également essayé d'utiliser le volet des préférences pour définir les raccourcis clavier:

entrez la description de l'image ici

entrez la description de l'image ici

Cependant, cela ne fonctionne pas et provoque cette erreur:

entrez la description de l'image ici

De plus, si je suis dans iTerm et que j'utilise alt+escapeensuite B ou F, le personnage se déplace d'avant en arrière. Cela se produisait avant tout changement de ma configuration. Mais j'aimerais vraiment pouvoir utiliser contrôle + les touches fléchées.

cwd
la source
Incidemment, une façon plus parcimonieuse d'y parvenir pourrait simplement être de mapper commande + gauche et commande + droite au lieu de ctrl + gauche et ctrl + droite. Je n'ai eu besoin de désactiver quoi que ce soit à l'échelle du système pour accomplir cela.
Docteur Mohawk

Réponses:

135

frapper

Ajoutez simplement ce qui suit à ~/.inputrc:

"\e[1;5D": backward-word
"\e[1;5C": forward-word

Voir ce post Wiki archivé pour plus d'explications. Si vous souhaitez utiliser la altclé à la place pour le déplacement mot à mot (comme le comportement par défaut d'OS X), utilisez:

"\e[1;9D": backward-word
"\e[1;9C": forward-word

zsh

zsh par défaut n'utilise pas la readlinebibliothèque et ne lira donc pas ~/.inputrc. Pour obtenir la même fonctionnalité, vous pouvez ajouter ce qui suit à votre ~/.zshrc- ceci utilisera à nouveau la altclé:

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word

Consultez cette documentation pour plus d'informations sur l'éditeur de ligne zsh intégré (zle).


Pourquoi est-ce? Vous avez configuré votre profil pour utiliser les valeurs par défaut de Xterm:

entrez la description de l'image ici

C'est pourquoi vous devez "attraper" cette séquence et dire readlinequoi faire.


Si ce qui précède ne fonctionne toujours pas et que vous utilisez OS X 10.9 (Mavericks), vous devez probablement désactiver les raccourcis globaux de Mission Control qui empêchent les touches Ctrl + flèche d’atteindre iTerm, même si Mission Control est désactivé. Vous pouvez le faire dans Préférences Système → Clavier → Raccourcis → Contrôle de mission :

clavier de commande mission prefs

slhck
la source
4
J'essaie de suivre les instructions pour que les touches alt + gauche et alt + droite fonctionnent. J'ai ajouté les deux lignes à mon fichier .inputrc, mais la seule chose qui se passe lorsque j'appuie sur les touches est qu'un "D" ou un "C" est imprimé sur le shell. J'utilise iTerm2 avec le shell zsh. Des idées?
Flo
1
@Flo Essayez d'ajouter les lignes bindkey -e, bindkey '^[[1;9C' forward-wordet bindkey '^[[1;9D' backward-wordà votre ~/.zshrcplace. IIRC zsh ne lira pas .inputrc- ou du moins cela fonctionne pour moi de cette façon.
Slhck
2
Ne fonctionne pas pour moi avec ctrl-gauche / droite + bash, mais fonctionne bien si je le configure pour alt-gauche / droite.
Dalin
3
Ajout d'une modification sur les raccourcis de contrôle de mission empêchant tout cela de fonctionner de la manière la plus opaque possible. J'espère que cela sauvera quelqu'un de la même chose que je venais de faire ...
rubyruy
12
Pour OSX + zsh + iTerm2 + ctrl-gauche / droite, utilisez les éléments suivants:bindkey -e; bindkey '\e\e[C' forward-word; bindkey '\e\e[D' backward-word
Artur Bodera
46

Solution de travail pour zsh. Simple, direct, prêt à l'emploi.

  1. Aller à: ⌘, Preferences → Profiles → Keys → Keyboard Behavior

  2. Charger le préréglage: Natural Text Editing

Charger le préréglage "Édition de texte naturel"

Heureux tortionnaire
la source
Merci @Happy Torturer, je pense que c'est la meilleure réponse, principalement parce que je n'ai pas ce problème sur Terminal.app, alors je ne veux pas modifier bash / zsh, je veux juste tout faire comme dans Terminal.app.
galuszkak
Ceci, ceci, ceci. Merci beaucoup pour cette solution! J'ai suivi ce processus accablant avec chaque Mac que je reçois. Je connais maintenant le moyen le plus simple d'y parvenir. Je vous remercie!
vernonk
8

Je l'ai corrigé de cette façon:

Dans le menu du haut; aller à

Profiles 
-> Open profiles... 
-> Edit profiles... (button) 
-> Keys (tab) 
-> Load Preset... (dropdown) 
->  Choose "Natural text editing". Done! :-)
rassom
la source
tout ce que j'ai sous ce préréglage est "
Paramètres d'
7

J'ai utilisé une approche différente. À l'aide de BetterTouchTool, j'ai programmé un raccourci clavier personnalisé pour iTerm2. Lorsque j'appuie sur Alt-gauche dans iTerm2, le raccourci clavier ctrl-gauche est envoyé avec l'action "Envoyer le raccourci clavier à une application spécifique". L'application est iTerm2. J'ai fait la même chose pour alt-right mappé sur ctrl-right.

En effet, si vous appuyez sur les touches Alt-Gauche ou Alt-Droite dans iTerm, les touches Ctrl-Gauche ou Ctrl-Droite sont directement envoyées à iTerm2, en contournant le raccourci système habituel pour déplacer un poste de travail à gauche ou à droite. Comme cela, j'obtiens le comportement typique de Mac dans iTerm2, lors de sessions de terminal locales, mais également lors de sessions SSH distantes. Je peux utiliser le standard ctrl-left / ctrl-right pour passer à différents bureaux. Je l'ai écrit ici:

http://www.callum-macdonald.com/2013/04/17/ctrl-left-and-ctrl-right-on-iterm2/

chmac
la source
2
BetterTouchTool n'est pas une source ouverte et pourrait très bien faire ce que vous souhaiteriez. Le gars dit qu'il est étudiant mais il pourrait tout aussi bien être une agence de trois lettres.
Revacuate
7

En fait, j'ai trouvé que la solution la plus simple était d'aller dans les paramètres de mon profil (trouvés dans Profils / Touches), en supprimant les raccourcis de profil incriminés (car le profil annulait globalement dans iTerm), dans mon cas alt + left et alt + right les raccourcis ont parfaitement fonctionné pour moi!

En outre, si vous utilisez OS X, il est probablement préférable de s'en tenir à des raccourcis à l'échelle du système, c'est-à-dire d'utiliser alt + gauche et alt + droite à cette fin. Avoir un comportement différent dans le terminal risque de causer une douleur.

Autre solution, la solution chmac consistant à utiliser Better Touch Tool constituait un moyen élégant de modifier le comportement du contrôle + flèche dans iterm uniquement.

Nayyarv
la source
en fait c'est la meilleure solution. C'est déroutant car la plupart d'entre nous allons à l' Keysonglet. Au lieu de cela, nous devons aller à l' Profilesonglet -> Un profil (par exemple, par défaut) -> touches.
Paschalis
C’est définitivement la solution la plus sûre et la plus simple.
Révacuer
2

Cet article enseigne ceci et d'autres raccourcis comme ← Supprimer pour supprimer un mot:

http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-shortcuts/

Seralto
la source
Cela ne répond pas vraiment à la question, qui concerne l'utilisation de <ctrl> <left>
DavidPostill
Tout ce que vous avez à faire est d’utiliser le raccourci qui vous convient. "<ctrl> <left>" ou ce que vous voulez.
Seralto
1
Citez donc les parties essentielles de la réponse à partir du ou des lien (s) de référence, car la réponse peut devenir invalide si la ou les pages liées changent.
DavidPostill
1

Vous devez aller dans l' Profilesonglet et supprimer le mappage pour alt+ leftet alt+ rightcar, par défaut, il génère des valeurs hexadécimales.

Sid
la source
Cela l'a fait pour moi!
Philip