
bashプロンプトの前に表示されるreadlineのモード文字列(またはまたはなど)の長さを調べるにはどうすればいいですか?このモード文字@
列(cmd)
は、(ins)
set show-mode-in-prompt on
で.inputrc
。
この文字列の長さを内部から判定したいと思います$PROMPT_COMMAND
。
プロンプト内でカーソルを移動してtput
端末の右側に情報を印刷し(必要に応じて上書きできるように)、その後左側のプロンプトの印刷を再開しようとしていますが、モード文字列の長さを考慮する必要があります。
モードをプレフィックスとして(例)に$PROMPT_COMMAND
変更すると、再度呼び出され、プロンプトが再表示されますか?emacs-mode-string
vi-ins-mode-string
答え1
モード文字列の長さに関する質問に対する答えではありませんが、回避策があります。
私は結局ANSI CSI コードカーソルの位置を保存して復元します。(ポインタを提供してくれた @tripleee に感謝します)。
以下に基づいてさまざまなことを試しましたPS1=$(getColumn)
が、カーソル位置を取得しようとしても、モード文字列の長さを見つけることができませんでした。getColumn
ANSI CSIコードを使用した私の回避策は以下にあります。「プロンプトの一部を右揃えにする」への回答。
サブプロセスを 1 つも使用せずにクリーンに実行できたので、この回避策には非常に満足していますshellcheck
。