537 votes

iTerm - parcourir un mot à l'envers et à l'endroit.

Serait-il possible de configurer l'iTerm 2 pour qu'il avance et recule d'un mot dans le texte courant de la ligne de commande en utilisant un raccourci clavier ?

66 votes

Cela ne répond pas vraiment à la question mais c'est pertinent : vous pouvez option+clic n'importe où dans une ligne de commande pour y déplacer le curseur.

0 votes

@P-i- Pourquoi pensez-vous que la réponse acceptée n'est pas la bonne ? 1. Elle est apparue presque 3 ans avant celle qui a reçu le plus de votes. 2. Elle présente une solution qui ne fonctionne pas par défaut.

3 votes

@P-i- Vous ne devez déclasser une question que si la question elle-même a des problèmes, pas parce que vous n'êtes pas d'accord avec les actions de l'OP.

23voto

bdanin Points 311

Similaire aux 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, allez dans : Préférences > Profils > Sous-menu Clés

Cliquez sur le signe +

Ajoutez votre combinaison de raccourcis, choisissez "Envoyer la séquence d'échappement".

entrées pour la gauche et la droite ci-dessous.

gauche :

[1;5D

droite :

[1;5C

2 votes

Tu as sauvé ma vie, mon pote.

0 votes

C'est la seule solution qui a fonctionné pour moi

0 votes

Enfin, une solution simple qui fonctionne :D Merci de la partager avec nous !

12voto

yosefrow Points 191

enter image description here

Ouvrir les préférences

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

Si vous avez modifié vos préréglages, vous devrez peut-être charger le préréglage par défaut (attention, cela pourrait effacer vos raccourcis clavier personnalisés !)

enter image description here

Si vous voyez des caractères bizarres après avoir fait 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 d'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

1 votes

Parfait... tks.

0 votes

Pas de problème ! Content que ça aide :)

4voto

esdee Points 11

Pour la nouvelle version d'iterm 2 (3.4.4), j'ai dû utiliser la suggestion de https://coderwall.com/p/a8uxma/zsh-iterm2-osx-shortcuts . Ce travail est spécifique à zsh

Dans zsh, vous pouvez utiliser ctrl + a/e pour vous déplacer en début/fin de ligne et esc + W/B pour déplacer un mot en arrière/en avant, mais ce n'est pas très pratique.

Voici une solution pour faire fonctionner + / et + / dans iTerm2 comme prévu

Mettez ceci dans votre .zshrc

bindkey "[D" backward-word
bindkey "[C" forward-word
bindkey "^[a" beginning-of-line
bindkey "^[e" end-of-line

1 votes

C'est incomplet - comme l'URL dit aussi que vous devez changer les choses dans iTerm - pourquoi pensez-vous que vous n'avez pas besoin de le faire ?

1 votes

Cela a parfaitement fonctionné pour moi avec iTerm 3.4.16 et zsh. Merci !

3voto

sebnukem Points 131

Vous pouvez configurer votre terminal en mode vi avec set -o vi pour pouvoir utiliser les commandes habituelles de mouvement de vi (ajouter la ligne en .bash_profile pour enregistrer le réglage de façon permanente).

Donc, comme si en vi, vous pouvez taper Esc alors b pour reculer d'un mot ( w pour avancer), aller au début de la ligne avec 0 ou rechercher un caractère en arrière avec F + le char.

Hit i pour revenir au mode normal et insérer.

Les personnes familiarisées avec vi peuvent faire beaucoup plus. Un aide-mémoire est disponible ici .

2 votes

Vim résout tout ! :D

0 votes

Frapper Esc puis I pour aller juste une fois au début de la ligne est légèrement moins pratique que Ctrl-a - ce cas d'utilisation se produit souvent lorsque vous voulez juste modifier le nom de la commande. J'utilise donc le mode vi avec quelques changements de raccourcis clavier dans iTerm2 pour faire correspondre les commandes suivantes Ctrl-A et similaire à la séquence d'échappement Esc+0 . De cette façon, ces cas sont encore plus rapides car ils se terminent en mode édition.

0voto

Melissa Points 101

Réponse avec des coupures de mots plus intuitives. Si j'ai :

ls foo/bar foo/bar/baz

Je veux qu'un mot soit foo/bar pas foo . Il a fallu un certain temps pour que cela fonctionne.

De ce J'ai ajouté à .bash_profile :

# Use Ctrl-g instead of Ctrl-f because Ctrl-f is mapped in macs to Find
bind '"\C-g":vi-fWord'
bind '"\C-b":vi-bWord'

D'après ce que j'ai pu voir, il n'est pas possible de mentionner la clé d'option dans la section .bash_profile . Donc j'ai fait en sorte que l'iTerm2 mappe de C-g -> Option-droite, C-b -> Option-gauche :

Screenshot of iTerm2 Preferences

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X