答え1
簡単に言うと、それは可能ですが、.inputrc
バインディングとしては複雑です。
長文: コメントで示唆されているように、できたbash プロンプトと readline バインディングで次のような操作を実行します。
カーソルを保存/復元しても効果はありません。画面の残りの部分を確実にクリアできるのは、Enter選択を完了するために押すときだけだからです。
に制御を渡してしまうとaccept-line
、画面の残りを消去するには遅すぎます。readline に複数の操作を実行させるために、一連の実際のキーバインディングとアドホックなキーバインディングを定義することは可能です (ただし複雑です)。たとえば、
しかし、この方法では、bashに文字を送信し、readlineにコマンドを発行することしかできません。readlineのコマンドはどれも
printf '\033[J'
クリアする残り画面の。最も近いのはreadlineの組み込みclear-screen
(ないバインディングは次のようにする必要があります
beginning-of-line
- 入れる "
printf '\033[J';
" end-of-line
accept-line
これはend-of-line
readlineの奇妙な動作を回避するものです。Enter どこでもカーソルが行の途中にある場合は、入力した内容の一部だけが表示されます (ただし、bash は文字列全体を取得します)。