web-dev-qa-db-fra.com

Comment naviguer plus rapidement dans les commandes longues?

Est-il possible d'accélérer la navigation dans la CLI de Linux lorsque je dois entrer de longues commandes? J'utilise simplement les 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?

135
Stann

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 à la fin de la ligne
  • Alt-B: ignorer un mot en arrière
  • Alt-F: ignorer un mot suivant
  • Ctrl-U: supprimer au début de la ligne
  • Ctrl-K: supprimer jusqu'à la fin de la ligne
  • Alt-D: supprimer jusqu'à la fin de Word
172
Adam Byrtek

Quelques autres raccourcis de 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
75
karlacio

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

Si vous êtes un utilisateur zsh, ajoutez bindkey -v à votre fichier .zshrc pour la modification de style vi.

14
user97589

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 + la touche de déplacement du curseur pour passer de blanc à blanc (c'est-à-dire, passer d'un mot à un autre).

8
Kory Wnuk

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-Something pour sauter directement au milieu, modifiez 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.

1
marukse