Czym jest skrót klawiaturowy przeciwny do Ctrl + k?

12

Ctrl+ Kusuwa resztę wiersza z wiersza poleceń systemu UNIX. Jak usunąć cały tekst przed kursorem?

syntagma
źródło

Odpowiedzi:

15

Użyj Ctrl+ u:

Z bashdokumentacji, zabijania i szarpania :

discx-line-discard (Cu)

Zabij wstecz od kursora do początku bieżącej linii.

Ctrl+ uZachowanie nie jest jedynie kontrolowane przez muszle, które mają swój własny edytor liniowy jak bash, zsh, tcsh, sh -o emacs, ale także dyscypliny linii terminala sterownika w trybie kanonicznym (jak w cat, lub podstawowe implementacje sh/ kshgdy nie ma line-edytor jest włączona ). Dzięki temu działa wszędzie.

Możesz sprawdzić dyscyplinę liniową kierowcy terminalu za pomocą stty -a(lub stty -everythingw systemie BSD):

$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Cuonglm
źródło
1
„Działa tylko wtedy, gdy twoja powłoka obsługuje tryb edycji Readline Emacs”. To nieprawda. ^uzarządzany jest przez dyscyplinę liniową TTY (o ile TTY jest w trybie wprowadzania liniowego, w przeciwieństwie do trybu wprowadzania znaków). Dzięki temu działa wszędzie. Zobacz man sttyi poszukaj kill CHAR. Ponadto utrzymuję moją powłokę w trybie vi i tam też działa.
Patrick
@Patrick: Nie wiem o tym, usuń tę niewłaściwą część.
cuonglm
1
Zauważ, że jak powiedziałem, ^Uzabija do początku linii tylko w readline / bash , a nie w innych powłokach.
Stéphane Chazelas,
1
@ StéphaneChazelas: W bash, ^Ktakże zabija do końca bufora, więc myślę, że ^Ujest odwrotnie?
cuonglm
1
Rzeczywiście przepraszam. Pamiętaj, że ^Kjest to kill-linewięc trochę mylące. Zauważ, że istnieje również backward-kill-lineograniczenie ^X^?(które zabija także więcej niż jedną linię).
Stéphane Chazelas