bash / readlineを使用してキーをバインドしてコンソール画面の下部を消去したいです。
画面下部を消去するANSIシーケンスは、\e[J
そのため、次の行を鉱山に追加しようとしましたが、うまくいかず、.inputrc
3文字だけを無視しました。
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
。