如何在命令列(bash 和 zsh)中向後刪除單字?

如何在命令列(bash 和 zsh)中向後刪除單字?

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

另一種選擇是設定您自己的快捷方式,但這取決於您使用的終端模擬器。對於xtermrxvt也許還有其他人,請將此行添加到您的文件中~/.inputrc(如果文件不存在,則創建該文件):

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

gnome-terminal及其同類似乎AltBackspace預設為但是顯然需要你打補丁readline()才能獲得CtrlBackspace

另請參閱:

答案4

令人驚訝的是,escthendelete也適用於 macOS。

另外,如果使用iTerm2,您可以更新預設值輪廓:

Keys > Key Mapping > Presets > Natural Text Editing

相關內容