Jak wyczyścić / usunąć bieżącą linię w terminalu?

794

Jeśli używam terminala i wpisuję wiersz polecenia, czy istnieje skrót klawiszowy lub jakiś sposób na wyczyszczenie / usunięcie tego wiersza?

Na przykład, jeśli moja bieżąca linia / polecenie jest naprawdę długa:

> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>

Czy istnieje skrót lub polecenie, aby przejść z powyższego do:

>

?

Zazwyczaj naciskam klawisz, a jeśli moja obecna linia jest zupełnie nowa w historii, to ją wyczyści. Ale jeśli przejrzę historię poleceń za pomocą klawisza i zacznę edytować lub używać tych poleceń, zmienię tylko wiersz polecenia na następne najnowsze polecenie w historii, więc nie będzie działać tutaj, chyba że nacisnę wiele razy.

triada
źródło
6
Skróty do szybszego przemieszczania się w wierszu poleceń Bash Ta strona jest bardziej ilustracyjna i wyjaśnia, myślę, że lepiej
Gab 是 好人

Odpowiedzi:

1491

Możesz użyć Ctrl+, Uaby wyczyścić do początku.

Możesz użyć Ctrl+, Waby usunąć tylko słowo.

Możesz także użyć Ctrl+, Caby anulować.

Jeśli chcesz zachować historię, możesz użyć Alt+ Shift+, #aby dodać komentarz.


Ściągawka w trybie edycji Bash Emacs

kev
źródło
231
Linię usuniętą przez Ctrl-U można także ponownie przywołać za pomocą Ctrl-Y.
keks,
65
Wut Tak fajne dzięki keks i kev, ⌃ + U usuwa wszystko przed kursorem, ⌃ + K jest usuwane wszystko po kursorze, ⌃ + A ma przejść na początek linii. Więc technicznie ⌃ + C jest najlepszym rozwiązaniem dla pytania
Binarian
3
Alt-Shift- # nie działa? myśleli inni. Alt-Shift- # wypisuje> znak na terminalu
tgkprog
49
Pozytywnie oceniany za nauczenie mnie <kbd>...</kbd>tagu pokazywania kluczy w SO.
Samveen
11
@ LưuVĩnhPhúc ESCto własny klawisz modyfikujący w bash. Służy do anulowania nawigacji po historii ( CTRL+ r) lub zamiany dwóch ostatnich słów za kursorem ( ESC+ t).
noobish
578

Podsumowując wszystkie odpowiedzi:

  • Oczyść linię: Możesz użyć Ctrl+, Uaby wyczyścić do początku.
  • Oczyść linię: Ctrl+ E Ctrl+, Uaby wyczyścić bieżącą linię w terminalu
  • Oczyść linię: Ctrl+ A Ctrl+, Kaby wyczyścić bieżącą linię w terminalu
  • Anuluj bieżące polecenie / linię: Ctrl+ C.
  • Przywołaj usunięte polecenie: Ctrl+ Y(następnie Alt+ Y)
  • Idź na początek linii: Ctrl+A
  • Idź do końca linii: Ctrl+E
  • Usuń na przykład wyrazy do przodu, jeśli jesteś w środku polecenia: Ctrl+K
  • Usuń znaki po lewej stronie, aż do początku słowa: Ctrl+W
  • Aby wyczyścić cały wiersz polecenia: Ctrl+L
  • Przełącz między początkiem linii a bieżącą pozycją kursora: Ctrl+XX
J4cK
źródło
6
uwaga ctrl-k usuwa wszystko między kursorem a końcem linii.
Peter Berg,
6
Usuń następne słowo:Alt + D
cnlevy,
1
Alt+ D nie działa, dlatego go nie uwzględniłem :(
J4cK
1
CTRL + Lczyści ekran, ale zachowuje to, co zostało wpisane w bieżącym wierszu poleceń.
Aziraphale,
1
Ctrl + Alt + >przesuwa się na koniec historii wprowadzania, co jest idealne, gdy chcesz anulować przeszukiwanie historii.
astasiak
165

Mam pełną listę skrótów:

  1. Ctrl+ a Przesuń kursor na początek linii
  2. Ctrl+ e Przesuń kursor do końca linii
  3. Ctrl+ b Cofnij się o jedną postać
  4. Alt+ b Cofnij o jedno słowo do tyłu
  5. Ctrl+ f Przejdź do przodu o jedną postać
  6. Alt+ f Przejdź do przodu o jedno słowo
  7. Ctrl+ d Usuń bieżący znak
  8. Ctrl+ w Wytnij ostatnie słowo
  9. Ctrl+ k Wytnij wszystko za kursorem
  10. Alt+ d Wytnij słowo po kursorze
  11. Alt+ w Wytnij słowo przed kursorem
  12. Ctrl+ y Wklej ostatnie usunięte polecenie
  13. Ctrl+ _ Cofnij
  14. Ctrl+ u Wytnij wszystko przed kursorem
  15. Ctrl+ xxPrzełączanie między pierwszą a bieżącą pozycją
  16. Ctrl+ l Wyczyść terminal
  17. Ctrl+ c Anuluj polecenie
  18. Ctrl+ r Polecenie wyszukiwania w historii - wpisz wyszukiwane hasło
  19. Ctrl+ j Zakończ wyszukiwanie przy bieżącym wpisie historii
  20. Ctrl+ g Anuluj wyszukiwanie i przywróć oryginalną linię
  21. Ctrl+ n Następne polecenie z historii
  22. Ctrl+ p poprzednie polecenie z historii
tharunkumar
źródło
5
Przepraszamy, ale podałem wszystkie przydatne klawisze skrótów, w których 7,8,9,10,11,14,16,17 to klawisze skrótów do usuwania / usuwania, których możemy używać zgodnie z wymaganiami.
tharunkumar
2
Należy wspomnieć, że CTRL+ L(16.) zachowuje treść bieżącego wiersza poleceń.
Aziraphale,
w systemie Windows wydaje się, że musisz użyć Ctrl + Shift + A, aby przejść na początek linii
Gandalf458
3
Brakuje Ctrl+ h: usuń znak przed kursorem
peflorencio
22

Ctrl+ A, Ctrl+, Kaby wyczyścić bieżącą linię w terminalu. W razie potrzeby możesz go przywołać za pomocą Ctrl+ Y.

Spyros Mandekis
źródło
16

lub jeśli używasz trybu vi, naciśnij, Esca następniecc

odzyskać to, co właśnie skasowałeś, Esca potem p:)

bluTaz
źródło
5
Możesz włączyć tryb vi przez echo 'set editing-mode vi' >> ~/.inputrc. Działa również w miejscach takich jak monity interpretera Pythona i niektóre klienty SQL
dwurf
11

Nie jestem pewien, czy ci się podoba, ale używam Ctrl+ A(aby rozpocząć linię) i Ctrl+ K(aby usunąć linię) Znałem te polecenia z emacsa i zorientowałem się je przypadkowo.

Muhammet Can
źródło
10

Alternatywą dla Ctrl+ A, Ctrl+ Kjest Ctrl+ E, Ctrl+ U.

Andrey Starodubtsev
źródło
6
  • Ctrl+ u: przejście do początku linii do bufora dzwonka
  • Ctrl+ k: przejście do końca linii do bufora pierścieniowego
  • Ctrl+ w: przenieś znaki i (wiele) słów pozostawionych z kursora do bufora dzwonka

  • Ctrl+ y: wstaw ostatni wpis z bufora dzwonka, a następnie możesz użyć Alt+, yaby obracać w buforze dzwonka. Naciśnij kilkakrotnie, aby przejść do „poprzedniego” wpisu w buforze dzwonka.

Cyrus
źródło
4

CTRL+ Ri zacznij pisać, aby wyszukać poprzednie polecenia w historii. Pokaże pełne linie.
CTRL+ Rponownie, aby przełączyć na cykl.

Daniel
źródło
2

Ctrl + W usunie słowo po lewej stronie.

bendangelo
źródło
2

Dodaj do listy:

W trybie Emacsa naciśnięcie Esc, a następnie Rusunięcie całej linii.

Nie wiem dlaczego, po prostu to znalazłem. Może nie jest używany do usuwania linii, ale zdarza się, że ma ten sam efekt. Jeśli ktoś wie, proszę powiedz mi, dziękuję :)

Działa w Bash, ale nie działa w Fish.

PickBoy
źródło
1
Jest to revert-linepolecenie readline: „Cofnij wszystkie zmiany dokonane w tym wierszu”. Domyślnie jest on powiązany z M-r(Meta-R), którym może być zarówno Alt-R, jak i Esc R. Oznacza to, że tak naprawdę nie usuwa on wiersza, tylko gdy na początku był pusty; jeśli przewiniesz wstecz w historii poleceń i zmienisz polecenie, a następnie wydaj polecenie, revert-linezmieni się z powrotem na polecenie, które było pierwotnie, i nie usunie wiersza.
Benjamin W.
2

Aby usunąć cały wiersz bez względu na to, gdzie znajduje się kursor, możesz użyć kill-whole-linepolecenia, ale domyślnie nie jest ono powiązane. Można go powiązać na przykład z Ctrl+ Alt+ K, wstawiając

"\e\C-k": kill-whole-line

do pliku inicjującego Readline (konwencjonalnie ~/.inputrc).

Różne uwagi:

  • Aby uniknąć przypadkowego ponownego przypisania sekwencji klawiszy, która jest już używana dla czegoś innego, możesz sprawdzić wszystkie swoje powiązania za pomocą bind -P. Sprawdź sugerowane powiązanie z

    bind -P | grep '\\e\\C-k'
  • Nazwa pliku inicjującego Readline jest pobierana ze zmiennej powłoki INPUTRC. Jeśli nie jest ustawiony, domyślnie jest to ~/.inputrclub (jeśli to nie istnieje) /etc/inputrc. Zauważ, że jeśli masz ~/.inputrc, /etc/inputrczostanie zignorowany.
  • Aby ponownie załadować plik inicjujący Readline, możesz użyć Ctrl+ X Ctrl+ R.
  • Linki do odpowiednich rozdziałów instrukcji:
Benjamin W.
źródło
2

Aby wyczyścić całą linię (2 różne sposoby):

  • Home, Ctrl+K
  • End, Ctrl+U
Jose1755
źródło
0

Alt+ #komentuje bieżącą linię. W razie potrzeby będzie dostępny w historii.

łosoś matowy
źródło