
如何找到在 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 程式碼的解決方法如下回答“提示部分右對齊”。
我對這個解決方法非常滿意,因為我設法在沒有單一子流程的情況下完成它,並使其shellcheck
乾淨。