
如何在命令列中向後刪除單字?我確實習慣了一些編輯器使用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