bash 提示字元中 readline 模式字串的長度

bash 提示字元中 readline 模式字串的長度

如何找到在 bash 提示字元前面列印的readline 模式字串(例如@(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乾淨。

相關內容