コマンドライン (bash および zsh) で単語を後方に削除するにはどうすればよいでしょうか?

コマンドライン (bash および zsh) で単語を後方に削除するにはどうすればよいでしょうか?

Ctrlコマンドラインで単語を後方に削除するにはどうすればいいですか? 一部のエディターでは+を使用して最後の「単語」を削除するのに慣れているのでBackspace、コマンドラインでもその機能が欲しいです。

私は現在 Bash を使用していますが、1 単語前に戻ってから 1 単語前を削除することもできますが、これをクイックキー、または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を押すと、行全体が消去されます。CtrlA

答え2

Alt+Backspace私の場合、bash と zsh で動作します。

答え3

これも で実行できますCtrlW

別のオプションとして、独自のショートカットを設定することもできますが、これは使用しているターミナル エミュレータによって異なります。 および 、xtermおよびrxvtおそらく他の については、次の行を に追加します~/.inputrc(ファイルが存在しない場合は作成します)。

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

gnome-terminalAltBackspaceそして、その類のものはデフォルトでそうであるように思われるがどうやらreadline()を取得するにはパッチを適用する必要がありますCtrlBackspace

以下も参照:

答え4

驚いたことに、macOS でも動作しますescdelete

また、iTerm2、デフォルトを更新することができますプロフィール:

Keys > Key Mapping > Presets > Natural Text Editing

関連情報