W wierszu poleceń systemu Windows (PowerShell i cmd), po naciśnięciu Escklawisza na linii, wszystko, co wpisałeś w wierszu polecenia, jest usuwane.
Przekonałem się, że naciśnięcie Esc
klawisza w linii poleceń bash nic nie robi. Naciśnięcie, Esc
a następnie backspace
usuwa słowo, ale należy to zrobić dla każdego słowa.
Uczę się Basha przyrostowo i czasami wpisuję coś głupiego na środku linii i czuję, że lepiej jest pisać od nowa. Aby to zrobić, naciśnięcie backspace
jest jedynym sposobem, jaki znalazłem do tej pory.
Co robisz?
Mam świadomość clear
polecenia i Ctrl-Lskrótu, ale nie mówię o wyczyszczeniu całego terminalu. Tylko linia.
bash
command-line
Animesh
źródło
źródło
Odpowiedzi:
Chcesz
kill-whole-line
, ale nie jest to domyślnie powiązane w bash.backward-kill-line
( CtrlX Backspace) iunix-line-discard
( CtrlU) oba usuwają od bieżącego punktu do początku linii, więc po prostu przejdź do końca linii i użyj jednego z nich.źródło
bind -P
. ChybaCtrl-U
i wtedyCtrl-Y
jest to jedyna opcja.Możesz użyć Ctrl+, Caby porzucić wszystko, co wpisałeś i uzyskać pusty nowy wiersz poleceń, zobacz Czy CTRL + C jest niepoprawny, aby powrócić do wiersza poleceń? .
źródło
Ctrl+aprzechodzi na początek linii i Ctrl+kusuwa do końca linii
źródło
^U
najpierw, w większości implementacji trybu edycji linii poleceń Emacsa już usuwa pełną linię. W tych, w których usuwa tylko lewy kursor (na przykład linia odczytu GNU), naciśnij^K
następnie.Aby nieco rozwinąć odpowiedź Ignacio Vazquez-Abramsa, możesz uzyskać (prawie) podobne do Windows zachowanie z Escklawisza bash, wiążąc
kill-whole-line
go Escz następującym poleceniemJeśli dodasz wiersz do
~/.inputrc
pliku, powiązanie będzie się utrzymywać między sesjami.Zauważ jednak, że jest to bardzo niestandardowe, ponieważ bash faktycznie używa tego Escklucza jako innego klawisza modyfikującego (takiego jak nietrwały Alt lub Ctrl). Jeśli spojrzysz na listę istniejących powiązań klawiszy (z
bind -P
), prawdopodobnie zobaczysz kilka poleceń powiązanych z kombinacjami klawiszy, które zaczynają się od „\ e” (np.który ustawia kombinację Esc+, Baby przesunąć kursor z powrotem do najnowszego początku słowa - raczej jak Ctrl+ ←, z tym wyjątkiem, że musisz zwolnić Esc(jak również Boczywiście), jeśli chcesz to zrobić więcej niż raz z rzędu ).
I to wyjaśnia, dlaczego powiedziałem, że twoje zachowanie jest prawie podobne do systemu Windows: po naciśnięciu Escbash sprawdza, czy używasz go w połączeniu z innym klawiszem; więc jeśli go
kill-whole-line
powiążesz, pomiędzy naciśnięciem (a raczej zwolnieniem) Esca wyczyszczeniem linii dla ciebie jest trochę opóźnienia .Jeśli jednak nie przejmujesz się tym i wolisz żyć z opóźnieniem niż przeszkolić się przy innym naciśnięciu klawisza, możesz to zrobić.
(Uwaga: wiele informacji tutaj otrzymałem w wyniku przeczytania - i podążenia za linkami - tej odpowiedzi ).
źródło
[19;
lub podobnie wyglądającym kodem ucieczki. W końcu znalazłem mapowanie"\e\e"
dokill-whole-line
(tj tap Esc dwukrotnie, aby wyczyścić linię) ładnym kompromisu.Esc
kilka razy, więc mogę spróbować. Obecnie mam to przypisane doCtrl
+,Del
ale nigdy tego nie pamiętam.