Länge der Readline-Modus-Zeichenfolge in der Bash-Eingabeaufforderung

Länge der Readline-Modus-Zeichenfolge in der Bash-Eingabeaufforderung

Wie finde ich die Länge des Modus-Strings von readline (z. B. @oder (cmd)oder (ins)), der vor der Bash-Eingabeaufforderung ausgegeben wird? Dieser Modus-String wird aktiviert durchset show-mode-in-prompt onIn .inputrc.

Ich möchte die Länge dieser Zeichenfolge von innen bestimmen $PROMPT_COMMAND.

Ich versuche, innerhalb der Eingabeaufforderung einige Cursorbewegungen auszuführen, tputum auf der rechten Seite des Terminals einige Informationen auszudrucken (damit sie bei Bedarf überschrieben werden können) und dann mit dem Ausdrucken der Eingabeaufforderung auf der linken Seite fortzufahren. Dabei muss ich jedoch die Länge der Moduszeichenfolge berücksichtigen.

Wird $PROMPT_COMMANDerneut aufgerufen und die Eingabeaufforderung erneut ausgegeben, wenn der Modus (zB) emacs-mode-stringauf vi-ins-mode-stringals Präfix geändert wird?

Antwort1

Keine wirkliche Antwort auf die Frage bezüglich der Modus-Stringlänge, aber ein Workaround:

Ich habe schließlich verwendetANSI CSI-Codesum die Position des Cursors zu speichern und wiederherzustellen. (Danke @tripleee für den Hinweis).

Ich konnte die Länge der Moduszeichenfolge immer noch nicht herausfinden, selbst als ich versuchte, die Cursorposition mithilfe verschiedener Dinge zu ermitteln PS1=$(getColumn), die ich basierend auf Folgendem ausprobiert habe:getColumn

Mein Workaround mit ANSI CSI-Codes finden Sie hier:als Antwort auf „Teil der Eingabeaufforderung rechtsbündig ausrichten“.

Ich bin mit der Problemumgehung ziemlich zufrieden, da ich es ohne einen einzigen Unterprozess und shellchecksauber geschafft habe.

verwandte Informationen