bashプロンプトの前に印刷されたreadlineパターン文字列(@
or orなど)の長さを見つけるには(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コードを使用する私の解決策は次のとおりです。「プロンプトセクションが右揃えです」と答えます。。
単一のサブプロセスなしできれいに処理できたので、この回避策には非常に満足していますshellcheck
。