web-dev-qa-db-ja.com

リードラインのControl-Backspace(unix-kill-rubout)?

readline(3)で、Control-BackspaceをControl-W(unix-kill-rubout)と同じ関数にマップできるはずです。私が何を入れたかに関係なく~/.inputrcこれを認識させることができません。

\C-\b: unix-kill-rubout

...たとえば、機能しません。 Control-Backspaceをreadlineのunix-kill-ruboutにマップできますか?

7
Jé Queue

追加する

"\C-_": unix-Word-rubout

to .inputrc私にとってはうまくいくようです。

C-_はコントロールアンダースコアを表します。これは私の端末が押すと送信するものです Ctrl+Backspace

押す Ctrl+V 次に、キーの組み合わせがそのコードをコンソールにエコーします。私にとっては、 Ctrl+V その後 Ctrl+Backspace エコー^_^はCtrlを意味します。 .inputrc\C-はCtrl修飾子なので、\C-_ここで必要なものです。この手法を使用して、使用する可能性のある他のキーの組み合わせを決定できます。

4
awatts

Graywhが指摘しているように、バックスペースはしばしば^?で表されます。にバインドするために ctrl+bksp.inputrcファイルで、readlineライブラリを変更する必要がある場合があります。この buntuチュートリアル には、デフォルトの出力を上書きできる新しい.keytabファイルが含まれています。

私のシステムでは、これにより"\e[9;3~": backward-kill-Word.inputrcに追加できます。

readlineの動作は異なるようです システムによって多少異なるため、KubuntuでKonsoleを使用していることに注意してください。

3
Henry Marshall

これは私にとってはうまくいきます(urxvt、bashで):

"\b":backward-kill-Word
2
Bjørnar Hansen

あなたの端末がctrl-backspace用の特別なコードを送信するのではないかと思います。バックスペースは通常ctrl-?であり、ctrl文字に別のctrl修飾子を追加することはできません。

1つの代替方法は、ターミナルにCtrl-Backspaceの特別なエスケープシーケンスを送信させ、それをreadline構成にマップすることです。

2
graywh
2
Tobu

Linuxターミナルの場合は、起動時にロードするキーマップを変更することで実行できます。私のデフォルトのubuntuでは/etc/console-setup/cached.kmap.gzをロードします。 Ctrl-Backspaceに対応するエントリが見つかった場合(おそらくControl-DeleteはすでにBackspaceとしてリストされています)、それをControl_wに変更できます。ターミナルエミュレーターについてはよくわかりませんが、konsole(デフォルトのKDEターミナルエミュレーター)には、キーバインド用の非常に優れた設定があります。お役に立てば幸いです:)

クリス

1
Chris Sykes

複数のLinuxシステムにログインするMacユーザーの場合:

アクセスしているシステム上の.inputrcまたはその他の構成ファイルにアクセスできず、ログインしているシステムに関係なく、すべてを普遍的に機能させたい場合は、Iterm2を使用したGUIソリューションを次に示します。

Brew( https://brew.sh )を使用して、MacのコマンドラインからMacにIterm2をインストールしました。

brew cask install iterm2

Iterm2でキーシーケンスをコントロールキーにバインドする方法

  1. アプリストアから無料のアプリケーション「キーコード」をダウンロードし、下のリンクからインストールして開きます。

  2. ヒット Ctrl+some key この場合、私は使用します Ctrl+w

    How to get the hex code

  3. 赤い四角の16進コードは、端末に送信するコードです。

  4. 次に、Iterm2のキーシーケンスを[アプリケーション]フォルダ-> [設定]-> [キー]-> +から開いてマップします。

How to map the command to the hex code

  1. これにより、opt +←deleteがにマップされます Ctrl+w ターミナルにありますが、これを使用して任意のキーを別のキーにマップできます。知っている Ctrl+w Emacsはサポートしていないので悪い例です Ctrl+w ただし、この方法はEmacs互換のショートカットに使用できます。
0
N D