Come navigare più velocemente sui comandi lunghi?


136

Esiste un modo per accelerare la navigazione della CLI di Linux quando devo inserire comandi lunghi? Uso semplicemente le frecce in questo momento e, se ho un comando lungo, ci vuole un po 'di tempo per passare dall'inizio del comando al centro di esso.

C'è un modo per esempio di saltare al centro del comando senza usare le frecce?

Risposte:


174

Alcune utili combinazioni di tasti per la modifica delle linee fornite dalla libreria Readline :

  • Ctrl-A: vai all'inizio della riga
  • Ctrl-E: vai alla fine della riga
  • Alt-B: salta una parola all'indietro
  • Alt-F: salta una parola in avanti
  • Ctrl-U: elimina all'inizio della riga
  • Ctrl-K: elimina fino alla fine della riga
  • Alt-D: cancella fino alla fine della parola

7
+1 perché funziona anche quando, per alcuni motivi, le frecce ctrl non funzionano. Vale la pena notare, per gli screenutenti, Ctrl-A diventa Ctrl-A A.
enzotib

3
Per annullare una cancellazione (o spostare il testo eliminandolo), utilizzare Ctrl + Y.
Lekensteyn

7
Ctrl + Freccia destra, Ctrl + Freccia sinistra da menzionare.
Mac,

3
Su Ubuntu usando Gnome e GnomeTerminal si Alt-Aapre il menu invece di spostare il cursore. Come si usa Alt-Acon Gnome? Voglio dire, Gnome è l'impostazione predefinita, quindi è probabile che chiunque legga questo esegua un terminale in Gnome.
Jason,

1
Se ti stai connettendo a Ubuntu da OS X su SSH potresti dover usare "Esc" invece di Ctrl, ad esempio Esc-A, Esc-E e così via. Questo è vero per iTerm e Terminal.
Fred Clausen,

77

Altre scorciatoie da qui

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

Grazie per questo semplice elenco senza chit-chat.
neverMind9

14

Se sei un utente vi [m] e bash, potresti trovare utile fare in modo che readline (usato da bash) usi la modifica in stile vi aggiungendo set editing-mode vial tuo ~/.inputrco ai tuoi /etc/inputrcfile. Oppure, puoi semplicemente fare in modo che bash usi la modifica in stile vi eseguendo il comando bash set -o vi. Aggiungi il comando al tuo ~/.bashrcfile per rendere persistente il comportamento.

Se sei un utente zsh, aggiungi bindkey -val tuo .zshrcfile per l'editing in stile vi.


8

Non conosco un modo per saltare specificamente al centro senza usare i tasti cursore. Tuttavia, posso consigliare di utilizzare CTRL + tasto cursore per passare da uno spazio vuoto all'altro (ovvero, saltare da una parola all'altra).


1

Sorgi il frammento di codice di seguito nel tuo .bashrc. Ctrl-a salta all'inizio e premendo Ctrl-a salta di nuovo al centro.

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'

O se vuoi usare Ctrl-Something per saltare direttamente al centro, cambia il codice in:

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

E associarlo a qualcosa di diverso da Ctrl-a.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.