如何在命令行(bash和zsh)中向后删除单词?


118

如何在命令行中向后删除单词?我确实习惯于一些编辑人员使用Ctrl+ 删除最后一个“单词” Backspace,我也希望在命令行中使用该功能。

目前,我正在使用Bash,尽管我可以向后跳一个单词,然后向前删除一个单词,但我宁愿将其作为快速键,也可以将事件作为Ctrl+ Backspace

如何做到这一点?

Answers:


169

ctrlw是标准的“杀伤词”(又名werase)。 ctrlu杀死整行(kill)。

您可以使用更改它们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$

请注意,不必在行上放置实际的控制字符,stty会理解放置^,然后再使用控制键即可击中该字符。

完成此操作后,如果我点击ctrlp它,则会从行中删除一个字。如果我点击ctrla,它将擦除整行。


stty我尝试使用该命令Ctrl+BckSpc通过键入stty weraseCtrl-v Ctrl-Backspace 来分配“ kill word” 。这会插入文字Ctrl-Backspace字符作为的参数stty werase。不幸的是,它不需要键入Ctrl-Backspace即可删除单词,而只能使用Backspace键。因此,我想第二次提出@terdon的请求,以学习如何执行此操作。要将其重置werase为默认值,请使用stty werase Ctrl-v Ctrl-w
蒂莫西·马丁

@TimothyMartin我对如何做有些困惑ctrl-backspace。退格键通常以ctrl-h或发送ctrl-?,所以ctrl-backspace会以某种方式发送ctrl-ctrl-backspace。我确实尝试弄清楚是否发送了其他内容,但是至少在输入时腻子才发送退格键ctrl-backspace
kurtm 2013年

3
ctrl + w可以有效删除单词,但它也可以复制到剪贴板,从而删除您存储的所有内容(或将其下推?)。
伊利亚·林恩

1
esc-删除刚刚起作用的:-)
Rene Wooller

1
那...生活正在改变。天哪。
有线00年

27

您也可以使用CtrlW

另一个选择是设置自己的快捷方式,但这取决于您使用的终端仿真器。对于xtermrxvt也许其他人,将以下行添加到您~/.inputrc的文件中(如果文件不存在,则创建该文件):

## rxvt, xterm
"\b":backward-kill-word

gnome-terminal和它的同类似乎AltBackspace默认情况下,但显然需要修补readline()才能获得CtrlBackspace

另请参阅:



-2

在Mac上,您可以使用:

Fn+Delete


2
这样会删除光标前面的1个字符,而不是后面的1个字
Dannid

不知道这是否仍然有意义,但是在Mac上为<Alt> + <Backspace>。
哈桑
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.