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 ?
Tu as sauvé ma vie, mon pote.
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 ?
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
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 !)
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
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
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 .
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.
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 :
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.
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.