如何在 bash 或 tmux 中显示 `vi` 命令行编辑(`set editor-mode vi`)的当前模式?

如何在 bash 或 tmux 中显示 `vi` 命令行编辑(`set editor-mode vi`)的当前模式?

我在 Bash shell 中使用vi命令行编辑(set editing-mode viin )。~/.inputrc

但是,我发现令人沮丧的是,我无法看到vi命令行编辑当前处于命令模式还是输入模式。

vi有没有办法在 Bash 或 tmux 中显示当前的命令行编辑模式?

答案1

您可以通过在以下位置设置光标样式来反映模式.inputrc

set editing-mode vi
set show-mode-in-prompt on
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2

# optionally:
# switch to block cursor before executing a command
set keymap vi-insert
RETURN: "\e\n"

这将为您提供插入模式下的光束光标或正常模式下的块光标。

更多请参见https://stackoverflow.com/a/42107711/52817

答案2

您可以添加set show-mode-in-prompt on到 readline 配置(~/.inputrc/etc/inputrc

如果您想直接在 shell 中切换它,可以通过bind内置命令来执行此操作:

bind 'set show-mode-in-prompt on'

bind 'set show-mode-in-prompt off'

参见相关内容Debian Jessie 中 bash 提示符开头出现虚假 @ 符号

相关内容