iTerm - va et vient d'un mot

166

Serait-il possible de configurer iTerm 2 pour revenir en arrière et avancer d'un mot dans le texte actuel de la ligne de commande à l'aide d'un raccourci clavier?

syntagme
la source
14
Cela ne répond pas vraiment à la question, mais est pertinent: vous pouvez l'option + cliquer n'importe où dans une ligne de commande pour y déplacer le curseur.
David Winiecki
Vote négatif pour n'avoir pas accepté la bonne réponse
Pi-
@ Pi- Pourquoi pensez-vous que la réponse acceptée n'est pas la bonne? 1. Il est apparu près de 3 ans avant celui avec le plus de votes. 2. Il présente une solution qui ne fonctionne pas par défaut.
syntagma

Réponses:

48

Ctrl-[ bsaute un mot en arrière. Vous pouvez également utiliser à la Escplace ou Ctrl-[, et fpour avancer.

C'est Ctrl+ [libération et ensuite bou f. Ou Escet bou f.

Plus d'informations peuvent être trouvées dans cette autre discussion sur AskDifferent.

Volsk
la source
3
Ce serait mieux s'il existait un moyen de revenir rapidement sur beaucoup de mots en maintenant un bouton enfoncé, au lieu d'avoir à taper une séquence de touches pour chaque mot.
user1717828
Qu'est-ce que "Ctrl-"?
Shihao Xu
Par "Ctrl- [", je veux dire appuyer simultanément sur les touches "Ctrl" et "[".
Volsk
329

Tuer une mouche avec un canon:

  • Allez dans Préférences ... > Profils > Clés
  • Appuyez sur Load Preset ...
  • Sélectionner l'édition de texte naturel

Ensuite, vous pouvez déplacer un mot en arrière en utilisant Option ⌥+ et un mot en avant en utilisant Option ⌥+ , aller au début de la ligne en utilisant fn+ et en fin de ligne avec fn+ . Vous pouvez également supprimer un mot à l’aide de Option ⌥+ , supprimer la ligne entière de Command ⌘+ .

Si le préréglage n'apparaît pas, réinstallez iTerm2. Si vous l'avez installé avec Homebrew + Cask:

brew cask reinstall iterm2
Ricardo Stuven
la source
49
Cela devrait être la réponse acceptée!
guyarad
3
Cela ne marche pas pour moi. Paramètres: iTerm2 3.1.2, macOS 10.12.6, clavier allemand. Et je ne suis pas seul ...
t0r0X
2
C'est génial et ajoutera la plupart de vos besoins. Il n’ajoute cependant pas de «passer au début / à la fin de la ligne via CMD + flèche gauche / flèche droite». Pour cette action, voir: stackoverflow.com/questions/6205157/…
MikeyN0
38
Ma vie a changé après avoir vu cette réponse. J'ai divorcé de ma femme, maintenant je suis dans un Lambo avec un mannequin.
Dragos Rizescu
12
Notez qu'il s'agit de Préférences> Profils > Touches> Charger les préréglages et non les préférences> Touches> Charger les préférences
kevin
148

J'aime la configuration suivante.

  1. Préférences> Clés (ou Préférences> Profils> Clés)
  2. Cliquez sur le plus.

avancer d'un mot

option+right
send escape sequence
f

reculer d'un mot

option+left
send escape sequence
b

supprimer au début du mot ( crédit )

option+delete
send hex code
0x1B 0x08

supprimer à la fin du mot

fn+option+delete
send escape sequence
d

(Je ne m'en souviens pas avec certitude, mais je pense avoir copié cette réponse à partir de la réponse de jherran ci-dessous et y avoir ajouté davantage. J'aurais dû ajouter les informations supplémentaires dans les commentaires ou suggéré de modifier cette réponse. Je ne sais pas comment améliorer la situation, mais maintenant c'est connu.)

David Winiecki
la source
2
Sous MacOS 10.12, je dois utiliser le code hexadécimal 0x17 pour pouvoir supprimer le début du mot
midopa le
fonctionne comme un charme avec macOS 10.12 et zsh
Sébastien
1
meilleure réponse que tu aies jamais eu une bière de moi :)
infinity
1
Envisagez de voter pour la réponse de Jherran. Je pense que j'ai juste amélioré un peu leur réponse et j'aurais probablement dû suggérer une modification au lieu de créer ma propre réponse. J'ai un peu l'impression de l'avoir volé.
David Winiecki
Référencé ceci : pour faire Esc-b, je devais envoyer 0x1b 0x42, et pour Esc-f, je devais envoyer 0x1b 0x46: D
Meredith
36

Pour aller en avant (Alt-f), en arrière (Alt-b) et supprimer (Alt-d) Word

  1. Ouvrez iTerm.
  2. Allez sur iTerm> Préférences ...> Profils> Clés
  3. Sous Touches de raccourci de profil, cliquez sur le signe +.
  4. Tapez votre raccourci clavier (option-b, option-f, option-d, option-gauche, etc.)
  5. Pour Action, choisissez Envoyer une séquence d'échappement.
  6. Écrivez b, d ou f dans le champ de saisie.

Cela fonctionne au moins pour bash. Pour zsh, il existe d' autres moyens de naviguer.

Jherran
la source
2
J'ai essayé d'ajouter un raccourci droit + option et un message d'avertissement concernant un conflit est apparu, car je ne savais pas que vous pouviez configurer les clés dans Préférences> Touches> Touches de raccourci globales et Préférences> Profils> Touches> Touches de raccourci de profil. La configuration dans le profil par défaut a fonctionné.
David Winiecki
1
Cela fonctionne aussi pour zsh!
Andrii Abramov
2
Je pense que votre réponse (à la même solution) était la plus facile à comprendre +1
nzaleski
1
Explication très utile.
Conti
Parfait. Vous pouvez également utiliser les touches Commande + F, etc. de manière à ce que la touche "Alt" se trouve dans la même position et qu'aucun réglage ne soit nécessaire lors du basculement entre PC et Mac.
friederbluemle le
12

Semblable à d'autres réponses, mais pour Zsh, il m'a fallu un certain temps pour trouver ceci:

Si vous utilisez Zsh, comme Oh My Zsh, dans iTerm, accédez à: Préférences> Profils > Clés

Cliquez + signe

Ajoutez votre raccourci clavier, choisissez "Envoyer séquence d'échappement"

entrées pour gauche et droite ci-dessous.

la gauche:

[1;5D

droite:

[1;5C
Bdanin
la source
1
Tu m'as sauvé la vie
thibaut noah
C’est la seule solution qui a fonctionné pour moi
Bryji
Enfin, une solution simple qui fonctionne: D Merci de la partager avec nous!
Periback
Cela devrait être la réponse. Upvote.
ehime le
2

entrez la description de l'image ici

Ouvrir les préférences

Configurer la touche d’option gauche (et / ou) droite pour envoyer Esc +

Si vous avez modifié vos paramètres prédéfinis, vous devrez peut-être charger le paramètre prédéfini par défaut (attention, cela pourrait effacer vos associations personnalisées!)

entrez la description de l'image ici

Si vous voyez des caractères étranges après cela, vous devrez peut-être configurer votre ~ / .inputrc ou / etc / inputrc

Ajoutez ceci à votre ~ / .inputrc:

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

exemple complet inputrc:

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.

# Be 8 bit clean.
set input-meta on
set output-meta on

# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[7~": beginning-of-line
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line

$endif
Yosefrow
la source
1
Parfait ... tks.
paivaric
Aucun problème! Glad ça aide :)
Yosefrow
2

Vous pouvez configurer votre terminal en mode vi set -o vipour pouvoir utiliser les commandes de mouvement vi habituelles (ajoutez la ligne .bash_profilepour stocker le réglage de manière permanente.)

Donc, comme si dans vi, vous pouvez frapper Esc, puis bpour déplacer un mot en arrière ( wpour avancer), aller au début de la ligne avec 0, ou rechercher un caractère en arrière avec F+ le caractère.

Appuyez sur ipour revenir en mode normal et insérer.

Ceux qui connaissent vi peuvent faire beaucoup plus. Un aide-mémoire peut être trouvé ici .

sebnukem
la source
2
Vim résout tout! : D
Breno Salgado
Il est légèrement moins pratique que de cliquer Escensuite Iune fois au début de la ligne Ctrl-a. Ce cas d'utilisation se produit souvent lorsque vous souhaitez simplement modifier le nom de la commande. J'utilise donc le mode vi avec quelques modifications de corrélation dans iTerm2 pour mapper Ctrl-Aet similaire pour échapper à la séquence Esc+0. De cette façon, ces cas sont encore plus rapides car ils se terminent en mode édition.
Rfabbri
-1

Avec iTerm2 3.1.4, j'ai pu configurer les éléments suivants sans ajouter de mappages de clés individuels.

  1. Allez dans Préférences> Profils> Clés
  2. Touche Gauche / Droite Select: Sélectionnez Echap +

Avec une nouvelle session Terminal, vous pouvez maintenant utiliser:

Option ⌥+ fpour aller de l'avant

Option ⌥+ bpour aller de l'avant

Option ⌥+ Delete ⌫pour supprimer Word

Fate.AKong
la source
2
Comment cela diffère-t-il de l'autre réponse hautement votée? apple.stackexchange.com/a/293988/237
user151019