Bashプロンプトのreadlineパターン文字列の長さ

Bashプロンプトのreadlineパターン文字列の長さ

bashプロンプトの前に印刷されたreadlineパターン文字列(@or orなど)の長さを見つけるには(cmd)(ins)このモード文字列は、以下によって有効になります。set show-mode-in-prompt on存在する.inputrc

私はそれからこの文字列の長さを決定したいと思います$PROMPT_COMMAND

端末の右側にいくつかの情報を印刷するために、プロンプト内でカーソルを移動し(必要に応じて上書きできるように)、左側にプロンプ​​ト印刷を再開しようとしますtput。ただし、次の点を考慮する必要があります。パターン文字列の長さです。

たとえば、パターンをプレフィックスに変更した場合は、もう一度呼び出して$PROMPT_COMMANDプロンプトを再印刷しますか?emacs-mode-stringvi-ins-mode-string

ベストアンサー1

実際には、パターン文字列の長さの質問に対する答えではありませんが、回避策は次のとおりです。

結局使ったANSI CSIコードカーソル位置を保存して復元します。 (ヒントをありがとう@tripleee)

PS1=$(getColumn)カーソル位置を取得しようとしてさまざまな方法を使用しても、パターン文字列の長さが見つかりません。getColumn

ANSI CSIコードを使用する私の解決策は次のとおりです。「プロンプトセクションが右揃えです」と答えます。

単一のサブプロセスなしできれいに処理できたので、この回避策には非常に満足していますshellcheck

おすすめ記事