ctrlwto standardowe „słowo zabicia” (alias werase
).
ctrluzabija całą linię ( kill
).
Możesz je zmienić za pomocą stty
.
-bash-4.2$ stty -a
speed 38400 baud; 24 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
-echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
-extproc -xcase
iflags: -istrip icrnl -inlcr -igncr -iuclc ixon -ixoff ixany imaxbel
-ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -ocrnl -onocr -onlret -olcuc oxtabs -onoeot
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = <undef>;
stop = ^S; susp = ^Z; time = 0; werase = ^W;
-bash-4.2$ stty werase ^p
-bash-4.2$ stty kill ^a
-bash-4.2$
Zauważ, że nie trzeba umieszczać rzeczywistego znaku kontrolnego na linii, stty rozumie umieszczenie, ^
a następnie postać, którą uderzyłbyś z kontrolą.
Po zrobieniu tego, jeśli uderzę ctrlp, usunie słowo z linii. A jeśli uderzę ctrla, usunie całą linię.
stty
polecenia próbowałem przypisać „słowo zabicia”Ctrl+BckSpc
, wpisując,stty werase
a następnie Ctrl-v Ctrl-Backspace. To wstawia dosłowny znak Ctrl-Backspace jako argumentstty werase
. Niestety nie wymaga pisania,Ctrl-Backspace
aby usunąć słowo, ale działa tylko zBackspace
kluczem. Chciałbym więc poprzeć prośbę @terdon, aby dowiedzieć się, jak to zrobić. Aby zresetowaćwerase
ustawienia domyślne, użyjstty werase Ctrl-v Ctrl-w
.ctrl-backspace
. Backspace jest zwykle wysyłane jako alboctrl-h
alboctrl-?
, więcctrl-backspace
jakoś sięctrl-ctrl-backspace
. Próbowałem dowiedzieć się, czy wysłano coś innego, ale przynajmniej kit po prostu wysyła backspace podczas pisaniactrl-backspace
.Możesz to również zrobić za pomocą CtrlW.
Inną opcją jest ustawienie własnego skrótu, ale będzie to zależeć od używanego emulatora terminala. Dla
xterm
irxvt
być może innych dodaj tę linię do~/.inputrc
(utwórz plik, jeśli nie istnieje):gnome-terminal
i wygląda na to, że AltBackspacedomyślnie ma, ale najwyraźniej wymaga łataniareadline()
w celu uzyskania CtrlBackspace.Zobacz także:
konsole
źródło
Alt+ Backspacedziała dla mnie w bash i zsh.
źródło
Ctrl+W
go powoduje usunięcie całego adresu URL podczasAlt+Backspace
usuwania słowa i przestaje być usuwany po znalezieniu znaku specjalnego.ctrl-y
szarpać / cofać / wklejać.Na Macu możesz użyć:
Fn+Delete
źródło