Comment naviguer plus rapidement dans les commandes longues?

136

Est-il possible d'accélérer la navigation dans la CLI de Linux lorsque je dois entrer de longues commandes? J'utilise simplement des flèches en ce moment, et - si j'ai une longue commande, il faut un certain temps pour aller du début de la commande au milieu de celle-ci.

Existe-t-il un moyen de sauter par exemple au milieu de la commande sans utiliser de flèches?

Stann
la source

Réponses:

174

Quelques liaisons de touche d'édition de ligne utiles fournies par la bibliothèque Readline :

  • Ctrl-A: aller au début de la ligne
  • Ctrl-E: aller au bout de la ligne
  • Alt-B: sauter un mot en arrière
  • Alt-F: sauter un mot en avant
  • Ctrl-U: supprimer au début de la ligne
  • Ctrl-K: supprimer jusqu'à la fin de la ligne
  • Alt-D: effacer jusqu'à la fin du mot
Adam Byrtek
la source
7
+1 car cela fonctionne même lorsque, pour certaines raisons, les touches Ctrl-flèches ne fonctionnent pas. À noter, pour les screenutilisateurs, Ctrl-A devient Ctrl-A A.
enzotib
3
Pour annuler une suppression (ou déplacer du texte en le supprimant), utilisez Ctrl + Y.
Lekensteyn
7
Ctrl + flèche droite, Ctrl + flèche gauche mérite d'être mentionnée.
Mac
3
Sous Ubuntu, utiliser Gnome et GnomeTerminal Alt-Aouvre le menu au lieu de déplacer le curseur. Comment utilisez-vous Alt-Aavec Gnome? Je veux dire, Gnome est la valeur par défaut, il est donc probable que quiconque le lirait utiliserait un terminal dans Gnome.
Jason
1
Si vous vous connectez à Ubuntu depuis OS X via SSH, vous devrez peut-être utiliser "Esc" au lieu de Ctrl, par exemple, Esc-A, Esc-E, etc. Cela est vrai pour iTerm et Terminal.
Fred Clausen
77

Quelques autres raccourcis d' ici

Ctrl + a  go to the start of the command line
Ctrl + e  go to the end of the command line
Ctrl + k  delete from cursor to the end of the command line
Ctrl + u  delete from cursor to the start of the command line
Ctrl + w  delete from cursor to start of word (i.e. delete backwards one word)
Ctrl + y  paste word or text that was cut using one of the deletion shortcuts (such as the one above) after the cursor
Ctrl + xx  move between start of command line and current cursor position (and back again)
Alt + b  move backward one word (or go to start of word the cursor is currently on)
Alt + f  move forward one word (or go to end of word the cursor is currently on)
Alt + d  delete to end of word starting at cursor (whole word if cursor is at the beginning of word)
Alt + c  capitalize to end of word starting at cursor (whole word if cursor is at the beginning of word)
Alt + u  make uppercase from cursor to end of word
Alt + l  make lowercase from cursor to end of word
Alt + t  swap current word with previous
Ctrl + f  move forward one character
Ctrl + b  move backward one character
Ctrl + d  delete character under the cursor
Ctrl + h  delete character before the cursor
Ctrl + t  swap character under cursor with the previous one
Karlacio
la source
Merci pour cette liste simple, sans bavardage.
neverMind9
14

Si vous êtes un utilisateur de vi [m] et de bash, vous trouverez peut-être utile de faire en sorte que readline (utilisé par bash) utilise l'édition de style vi en l'ajoutant set editing-mode vià vos fichiers ~/.inputrcou /etc/inputrc. Ou bien, vous pourriez simplement demander à bash d'utiliser l'édition de style vi en exécutant la commande bash set -o vi. Ajoutez la commande à votre ~/.bashrcfichier pour rendre le comportement persistant.

Si vous êtes un utilisateur de zsh, ajoutez-le bindkey -và votre .zshrcfichier pour une édition de style vi.


la source
8

Je ne connais pas de moyen de sauter spécifiquement au milieu sans utiliser les touches du curseur. Cependant, je peux recommander l'utilisation de la combinaison de touches CTRL + curseur pour passer d'un blanc à un autre (c.-à-d. Passer d'un mot à un autre).

Kory Wnuk
la source
1

Source l'extrait de code ci-dessous dans votre .bashrc. Ctrl-a saute au début et appuyez à nouveau sur Ctrl-a pour sauter au milieu.

jump_mid() {
    if [ "$READLINE_POINT" -eq "0" ]; then
        LEN=${#READLINE_LINE}
        POS=$(($LEN / 2))
        READLINE_POINT=$POS
    else
        READLINE_POINT=0
    fi
}
bind -x '"\C-a" : jump_mid'

Ou si vous voulez utiliser Ctrl-Quelque chose pour sauter directement au milieu, changez le code en:

jump_mid() {
    LEN=${#READLINE_LINE}
    POS=$(($LEN / 2))
    READLINE_POINT=$POS
}

Et liez-le à quelque chose de différent de Ctrl-a.

Marukse
la source