Readline: ANSI エスケープシーケンスをキーにバインドする

Readline: ANSI エスケープシーケンスをキーにバインドする

bash / readlineを使用してキーをバインドしてコンソール画面の下部を消去したいです。

画面下部を消去するANSIシーケンスは、\e[Jそのため、次の行を鉱山に追加しようとしましたが、うまくいかず、.inputrc3文字だけを無視しました。

Control-N: "\e[J"

文字列にいくつかのテスト文字を追加すると、次のようになります。

Control-N: "BEFORE \e[J AFTER"

を押してから文字列を挿入し、BEFOREそこで停止します。

現在、この回避策が見つかりましたが、明らかに不要なechoコマンドを含む行が表示されます。

Control-N: "echo -ne \"\\e[J\"\n"

バインディングを介してANSIシーケンスを送信できますかreadline

ベストアンサー1

2つの部分:

  • Bashを使用すると、キーをreadlineにバインドできます画面を消去機能(元の目標のようです)。
  • Bashのreadlineの目的は、コマンドを実行するためにテキストを準備(編集など)することです。強く打つ。エスケープシーケンスは次に送信されます。端末。なしリストされた機能readlineの場合echoまたはが置き換えられますprintf

readlineのキーバインディングには、単一の関数名またはリテラル文字列が必要です。あなたの例では、readlineは可能であると思われる関数名を読み、残りの行は無視します。

したがって、いいえ、bash / readlineはエスケープシーケンスをキーバインディングに直接エコーする便利な機能を提供しません。前述のようにを使用する必要がありますecho

おすすめ記事