12

Bash 4.2 にCtrl-wをマップしたいのですが。このキーは、デフォルトで (単語を後方に削除) にkill-regionバインドされています。マニュアルによると、オプションを持つコマンドでunix-word-rubout再マッピングが可能になるはずですbind

-u function 指定された関数にバインドされているすべてのキーのバインドを解除します。

-r keyseq keyseq の現在のバインドをすべて削除します。

試しbind -r "\C-w"てみbind -u unix-word-ruboutましたが、キーは設定解除されておらず、bind -P | grep unix-word-rubout明らかなように、マッピングに変更はありませんでした。

少し遊んだbindところ、他の組み込みキーのバインドを解除できましたが、Ctrl- w.

4

2 に答える 2

16

Ctrl-wにバインドされsttyていweraseます。最初にバインドを解除する必要があります。

stty werase undef
bind '"\C-w":kill-region'
于 2012-06-11T13:14:19.503 に答える
15

デフォルトでは、readline は、カーネルの端末ドライバーによって特別に扱われる制御文字を、対応する readline にバインドしようとします。(端末がどのように構成されているかを確認するには、次を実行します。

stty -a

.) 端末はおそらく にCtrl-w設定されてweraseいるため、bash はそれを にバインドしunix-word-ruboutます。このバインドは、 で指定したキーバインドよりも優先されます~/.inputrc

このマッピングを回避するには、ファイル内で readline 変数bind-tty-special-charsを次のように設定する必要があります。off~/.inputrc

set bind-tty-special-chars off
于 2014-05-09T06:54:15.463 に答える