Jak szybciej nawigować po długich poleceniach?

136

Czy istnieje sposób na przyspieszenie nawigacji w systemie Linux CLI, gdy muszę wprowadzać długie polecenia? Po prostu używam teraz strzałek i - jeśli mam długie polecenie, przejście od jego początku do środka zajmuje trochę czasu.

Czy istnieje sposób, na przykład, przeskoczyć na środek polecenia bez użycia strzałek?

Stann
źródło

Odpowiedzi:

174

Niektóre przydatne powiązania klawiszy edycji linii dostarczone przez bibliotekę Readline :

  • Ctrl-A: przejdź na początek linii
  • Ctrl-E: przejdź do końca linii
  • Alt-B: pomiń jedno słowo do tyłu
  • Alt-F: pomiń jedno słowo do przodu
  • Ctrl-U: usuń na początek linii
  • Ctrl-K: usuń do końca linii
  • Alt-D: usuń do końca słowa
Adam Byrtek
źródło
7
+1, ponieważ działa to nawet wtedy, gdy z jakichś powodów strzałki Ctrl nie działają. Warto zauważyć, że dla screenużytkowników Ctrl-A
zmienia
3
Aby cofnąć usunięcie (lub przenieść tekst, usuwając go), użyj Ctrl + Y.
Lekensteyn
7
Ctrl + strzałka w prawo, Ctrl + strzałka w lewo, o których warto wspomnieć.
Mac
3
W systemie Ubuntu używanie Gnome i GnomeTerminal Alt-Aotwiera menu zamiast przesuwania kursora. Jak korzystać Alt-Az Gnome? Chodzi mi o to, że Gnome jest domyślny, więc prawdopodobnie każdy, kto to czyta, uruchomiłby terminal w Gnome.
Jason
1
Jeśli łączysz się z Ubuntu z OS X przez SSH, być może będziesz musiał użyć „Esc” zamiast Ctrl, np. Esc-A, Esc-E i tak dalej. Dotyczy to iTerm i terminala.
Fred Clausen
77

Więcej skrótów stąd

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
źródło
Dziękuję za tę prostą listę bez chit-chatów.
neverMind9,
14

Jeśli jesteś użytkownikiem vi [m] i bash, może okazać się przydatne, aby readline (używane przez bash) korzystało z edycji w stylu vi, dodając set editing-mode vido pliku ~/.inputrclub /etc/inputrc. Lub możesz po prostu sprawić, aby bash używał edycji w stylu vi, uruchamiając polecenie bash set -o vi. Dodaj polecenie do ~/.bashrcpliku, aby zachowanie było trwałe.

Jeśli jesteś użytkownikiem Zsh , dodaj bindkey -vdo swojego .zshrcpliku w celu edycji w stylu vi.


źródło
8

Nie znam sposobu, aby wskoczyć na środek bez użycia klawiszy kursora. Jednak mogę zalecić użycie CTRL + klawisz kursora, aby przejść z pustego do pustego (tj. Przeskakiwać z jednego słowa na drugie).

Kory Wnuk
źródło
1

Źródło poniższego fragmentu kodu w .bashrc. Ctrl-a przeskakuje na początek, a naciśnięcie Ctrl-a ponownie przeskakuje na środek.

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'

Lub jeśli chcesz użyć Ctrl-Coś, aby bezpośrednio przeskoczyć na środek, zmień kod na:

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

I powiąż to z czymś innym niż Ctrl-a.

Marukse
źródło