如何在命令行中向后删除单词?我确实习惯了一些编辑器使用Ctrl+删除最后一个“单词” Backspace,并且我也希望在命令行中使用该功能。
我目前正在使用 Bash,虽然我可以向后跳一个单词,然后向前删除一个单词,但我宁愿将其作为快捷键,或将事件作为Ctrl+ Backspace。
如何才能做到这一点呢?
答案1
Ctrl+W是标准的“杀字”(又名werase
)。
Ctrl+U杀死整行 ( 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
理解放置^
然后是您将用控制击中的字符。
完成此操作后,如果我按Ctrl+,P它将从该行中删除一个单词。如果我点击Ctrl+ A,它将删除整行。
答案2
Alt+Backspace在 bash 和 zsh 中适用于我。
答案3
您也可以使用 来执行此操作CtrlW。
另一种选择是设置您自己的快捷方式,但这取决于您使用的终端模拟器。对于xterm
和rxvt
也许还有其他人,请将此行添加到您的文件中~/.inputrc
(如果文件不存在,则创建该文件):
## rxvt, xterm
"\b":backward-kill-word
gnome-terminal
及其同类似乎AltBackspace默认具有但是显然需要你打补丁readline()
才能获得CtrlBackspace。
另请参阅:
答案4
令人惊讶的是,escthendelete也适用于 macOS。
另外,如果使用iTerm2,您可以更新默认值轮廓:
Keys > Key Mapping > Presets > Natural Text Editing