When in shell(bash)-Ctrl-Backspaceを「単語を後方に削除」にバインドしたい。出来ますか?
編集:
konsole
KDEのターミナルを使用しています。
Ctrl-w
おり、コンソールで「前の単語を削除」するのに慣れていて、EclipseやChromeでもタブを閉じる/現在のファイルを閉じるという意味で本能的にそれを行います。かなり迷惑です。
When in shell(bash)-Ctrl-Backspaceを「単語を後方に削除」にバインドしたい。出来ますか?
編集:
konsole
KDEのターミナルを使用しています。
Ctrl-w
おり、コンソールで「前の単語を削除」するのに慣れていて、EclipseやChromeでもタブを閉じる/現在のファイルを閉じるという意味で本能的にそれを行います。かなり迷惑です。
回答:
ほとんどの端末で既にマップされているAlt+ BackspaceまたはCtrl+ Wを使用しないのはなぜですか。コンソールについてはわかりません。Xmodmap(man xmodmap)は、他のカスタムキーの再マッピングにも使用できます。(逆説的に、xmodmapは、端末がマッピングをオーバーライドするため、Backspaceをうまく再マップできませんが、ほとんどのキーでうまく機能します...)。
私はグーグルでこのスレッドを見つけましたが、答えは聞きたいものではありませんでした。だから私は遊んだ:
私の端末では、通常のバックスペースがを送信し^H
、ctrl + backspaceが送信します^?
。したがって^?
、単語を削除するために再バインドするのは簡単なはずです。これは、デフォルトでCtrl + Wを介して使用可能です。
$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".
したがって、これは動作するはずです:
$ bind '"\C-?":unix-word-rubout'
しかし、それは...誰も説明できませんか?
$ bind '"\C-?":"^W"'
どこ^W
リテラル/生である^W
(プレスCTRL + Vし、Ctrl + Wは、それが表示されるようにします)。
ここにはいくつかの良い答えがありますが、Konsoleで[設定]-> [現在のプロファイルの編集]-> [キーボード]-> [編集]で解決し、からBackspace+Control
にマッピングを追加し\x17
ます。(を使用してCtrl-wのASCIIコードを見つけましたshowkey --ascii
。)
showkey
。したがってALT+D
、カーソルの前にある単語を削除するとに対応することがわかりました\x1b\x64
。
\x1b\x7f
です。
それはbashが何を見るかに依存します。通常のターミナルインタラクションでは、bashはどのキー修飾子が押されたかを表示せず、結果の文字のみを表示します。たとえば、Backspaceはすでにcontrol-Hと同じです。シフトまたはコントロールを押し続けても違いはありません。
ただし、ターミナルアプリケーション(xterm?cmd?Terminal?Putty?OSに依存します)はキー押下を認識でき、コントロールとバックスペースのキーの組み合わせをバックスペースとは別にbashが認識できるものにマッピングする方法があります。
key Backspace-Shift-Control : "\x7f"
およびkey Backspace-Shift+Control : "\E[9;3~"
また、タイトル行を変更します(keyboard "Xfree4 Modlist"
例:)。その後"\e[9;3~": backward-kill-word"
、〜/ .inputrcに追加できます
これを試して:
bind '"\C-_":backward-kill-word'
オプションで、以下を〜/ .inputrcに追加して永続化します。
"\C-_": backward-kill-word
Kubuntu 14.04のbash 4.3.11で動作します
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
ます。
Konsoleの場合:
Settings -> Edit current profile
[Edit...]
[Add]
ボタンをクリックし、Key Combination
列タイプの下にあるBackspace+Ctrl
。中Output
列タイプ0x08
(従来、バックスペース文字です)これで、キーをbackward-kill-word
経由してそのキーをマッピングできるはずです。
# ~/.bashrc
bind '"\x08":backward-kill-word'
ほとんどの端末では、CTRL + Wはすでに単語を逆方向に削除するはずです。これはxtermで動作し、konsoleでも動作すると思います。CTRL + Wは、挿入モード、emacs、およびすべてのシェルでvimで動作するテキストベースのプログラムの標準キーバインディングです。
Ctrl+w
私が慣れる必要があるものです。