bash 提示符中 readline 模式字符串的长度

bash 提示符中 readline 模式字符串的长度

如何找到在 bash 提示符前面打印的readline 模式字符串(例如@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干净。

相关内容