web-dev-qa-db-ja.com

コマンドライン(bashおよびzsh)でWordを逆方向に削除するにはどうすればよいですか?

コマンドラインでWordを逆方向に削除するにはどうすればよいですか?一部の編集者が最後の「Word」を使用して削除することに本当に慣れています Ctrl+Backspace、そして私もコマンドラインでその機能が欲しいです。

私は現在Bashを使用していて、Wordを後方にジャンプしてからWordを前方に削除することはできますが、これをクイックキーまたはイベントとして使用したいです。 Ctrl+Backspace

どうすればこれを達成できますか?

133
lucidquiet

ctrlw 標準の "kill Word"(別名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、行全体を消去します。

188
kurtm

あなたはこれを行うこともできます CtrlW

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

_## rxvt, xterm
"\b":backward-kill-Word
_

_gnome-terminal_とその同類は持っているようです AltBackspace デフォルトでは どうやら を取得するには、readline()にパッチを適用する必要があります CtrlBackspace

以下も参照してください:

29
terdon

Alt+Backspace bashとzshで動作します。

26
Luis

Macでは、以下を使用できます。

Fn+Delete

1
J.Yang