我可以在终端(xterm)使用 vi 模式时查看我处于哪种模式吗?

Can I view in which mode I am while using vi-mode for terminal (xterm)?

这个问题不言自明。我从一位同事那里听说,在终端中使用 vi-mode 时,有一种方法可以查看我当前处于哪种模式,但他不知何故忘记了它是如何完成的,我找不到这个问题的答案。我该怎么做?

这是一个 readline 功能。要启用它,您必须设置

set show-mode-in-prompt on

在您的 ~/.inputrc 文件中。这需要 readline 6.3 或更新版本(与 Bash 4.3 或更新版本捆绑在一起)。

在 vi 模式下,模式字符串默认为 (ins)(cmd):

(cmd)$
(ins)$

这假定您的提示只是 PS1='$ '

您可以使用其他两个 readline 设置自定义它们,例如

set vi-cmd-mode-string [c]
set vi-ins-mode-string [i]

导致

[c]$
[i]$

请注意,非打印字符(如颜色的终端转义符)必须使用 </code> 和 <code> 进行转义。这两个设置需要 readline 7.0 或更新版本(与 Bash 4.4 或更新版本捆绑在一起)。

手动输入: