2016-08-12 1 views
1

私は* nixシェルを書いています、私はのキーの組み合わせをサポートしたいです。 - を入力してください。私が使っているライブラリはGNU readlineです。どのようにバインドするCtrl + Enter "readline"ライブラリを使用して?

私はそれに数時間を費やしましたが、方法を見つけることができません。

私はのように、成功しを入力バインドできます。=========〜/ .inputrcの===============

"\C-M": "sdf" 

====================================

私はをEnterキーを押し、私は "sdf"をエコーし​​た。 === =========〜/ .inputrcの

:私もEscキーをバインドすることができ

が正常を入力しますように、(メモして、ここで重要なシリアル、ない組み合わせです) ============

"\e\C-M": "sdf" 

=============================== =====

Escを入力してからと入力すると、「sdf」が期待どおりにエコーされました。ただし、次の行が有効Ctrlキーを生成することはできません

から組み合わせを入力します。

=========〜/ .inputrcのを========== =====

"\C\C-M": "sdf" 

====================================

「\ C- \ CM」も機能しません。ここで

されている2つの関連する質問:

how to bind the 'Enter key'

How to bind Ctrl-Enter in fish?

は、いずれかが私を助けることができますか?

+0

2番目のリンクされた質問の答えは、実際には可能ではないことを伝える必要があります。 –

+0

EscとControlの違いは、Escキーを押して次のキーの前に離すことができることです。 '\ C-M'は、ほとんどの端末がEnterまたはControl-mを押すとASCII 13を生成するので機能します。あなたは何かを意味するために別のキーと一緒にコントロールキーを押したままにする必要があります。それを2回押さえることは何を意味するのでしょうか? – chepner

+0

「それを2度押さえたらどういう意味ですか?」 – weiweishuo

答えて

0

あなたが使用している端末エミュレータ言及していない - 最後に、それはあなたがCTRL +

Aを入力し、Enterキーを押したときにあなたのプログラムがそれから読み込むかを決定ターミナルであるので、重要いますこの作品を作るための方法は、(あなたがxtermを使用すると仮定した場合)されます。

  • xterm送信などを行いますあなたがCtrlキーを押したときにCTRL + K + はあなたの.Xdefaultsに行を追加することで、を入力します。あなたが望む

    XTerm.vt100.translations: #override Ctrl<Key>Return: string("\013")

  • バインドこの何に.inputrcに:

    "\C-k": "sdf"

これはあくまでxtermでのみ有効ですので、あまりエレガントではありません。しかし、私が見る限り、あなたが望むものを得るための唯一の方法です。

+0

これはCtrl-Kを使用させないというかなりの欠点があります。一部のアプリケーションで一般的に使用されています。おそらく、Ctrl-Enterを1文字だけでなく他のシーケンスにマップすることもできます。しかし、他のユーザーが同じマッピングを設定することは期待できません(xtermを使用していると仮定しても)。 OPが他の誰かがアプリケーションを使用することを期待していないことは合理的かもしれません。 –

関連する問題