Что такое сочетание клавиш напротив Ctrl + k?

12

Ctrl+ Kудаляет остаток строки в командной строке UNIX. Как мне удалить весь текст перед курсором?

синтагма
источник

Ответы:

15

Используйте Ctrl+ u:

Из bashдокументации, Убийство И Янкинг :

unix-line-discard (Cu)

Убить назад от курсора до начала текущей строки.

Ctrl+ uПоведение не только контролируется оболочками , которые имеют свой собственный редактор строки , как bash, zsh, tcsh, sh -o emacs, но и по линии дисциплине драйвера терминала , когда в каноническом режиме (как в cat, или основных реализациях sh/ , kshкогда ни одна строки редактор не включен ). Таким образом, это работает везде.

Вы можете проверить линейную дисциплину драйвера терминала, используя stty -a(или stty -everythingв системе 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
источник
1
Msgstr "Это работает, только если ваша оболочка поддерживает режим редактирования Readline Emacs". Это неверно ^uуправляется линейной дисциплиной TTY (пока TTY находится в режиме линейного ввода, в отличие от режима ввода символов). Таким образом, это работает везде. Смотри man sttyи ищи kill CHAR. Также я держу свою оболочку в режиме vi, и она там тоже работает.
Патрик
@ Патрик: Не знаю об этом, удали эту неправильную часть.
cuonglm
1
Обратите внимание, что, как я уже сказал, ^Uубивает до начала строки только в readline / bash , а не в других оболочках.
Стефан Шазелас
1
@ StéphaneChazelas: В bash, ^Kтакже убивает до конца буфера, так что я думаю ^U, что наоборот?
Cuonglm
1
Действительно, извините. Обратите внимание , что ^Kэто kill-lineтак , что это немного вводит в заблуждение. Обратите внимание, что есть также backward-kill-lineграница ^X^?(которая также убивает более одной строки).
Стефан Шазелас