当vi-mode中的bash切换到插入模式时,我总是有点困惑,因为它没有给出关于使用模式(命令或编辑)的任何提示。 有没有办法区分mods?可以自动更改光标颜色或类似的东西吗?
答案 0 :(得分:45)
添加:
set show-mode-in-prompt on
这将在插入模式下使用 + 为您的提示添加前缀,在bash 4.3中的命令模式下为:添加前缀
修改强> 在最新版本的bash 4.4中,默认情况下,您将获得前缀为“(ins)”或“(cmd)”的提示。但是,你可以改变:
set vi-ins-mode-string "+"
set vi-cmd-mode-string ":"
另外,您可以使用'\ e [1; 31m'这样的颜色代码,但用'\ 1'和'\ 2'包围它们以保持readline快乐:
set vi-cmd-mode-string "\1\e[1;31m\2:\1\e[0m\2"
答案 1 :(得分:35)
在@Isaac Hanson的回答基础上,您可以通过在.inputrc
中设置这些来设置光标样式以反映模式(就像在VIM中一样):
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"
这将为您提供插入模式下的光束光标或正常模式下的块光标。
其他选项(替换\e[
后面的数字):
Ps = 0 -> blinking block.
Ps = 1 -> blinking block (default).
Ps = 2 -> steady block.
Ps = 3 -> blinking underline.
Ps = 4 -> steady underline.
Ps = 5 -> blinking bar (xterm).
Ps = 6 -> steady bar (xterm).
您的终端必须支持DECSCURSR(如xterm,urxvt,iTerm2)。 TMUX也支持这些(如果你在tmux之外设置TERM=xterm-256color
)。
答案 2 :(得分:11)
在korn shell中使用vi模式多年后,我基本上已经训练过自己在键入任何命令前点击ESC
几次,然后ESC
然后i
开始输入
基本前提是如果你只是点击ESC
,就会确切地知道你所处的模式。