chu*_*uwy 54 vi bash command-line-interface
当vi-mode中的bash切换到插入模式时,我总是有点困惑,因为它没有给出关于使用模式(命令或编辑)的任何提示.有没有办法区分mods?可能是光标颜色的自动更改或类似的东西?
Isa*_*son 49
在/ etc/inputrc(或〜/ .inputrc)中添加:
set show-mode-in-prompt on
Run Code Online (Sandbox Code Playgroud)
这将在插入模式下使用+前缀,并且:在bash 4.3中的命令模式下
编辑: 在最新版本的bash 4.4中,默认情况下,您将获得前缀为"(ins)"或"(cmd)"的提示.但是,你可以改变:
set vi-ins-mode-string "+"
set vi-cmd-mode-string ":"
Run Code Online (Sandbox Code Playgroud)
另外,您可以使用'\ e [1; 31m'这样的颜色代码,但用'\ 1'和'\ 2'包围它们以保持readline快乐:
set vi-cmd-mode-string "\1\e[1;31m\2:\1\e[0m\2"
Run Code Online (Sandbox Code Playgroud)
lak*_*tak 42
在@Isaac Hanson的答案基础上,您可以通过在以下设置中设置光标样式以反映模式(就像在VIM中一样).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"
Run Code Online (Sandbox Code Playgroud)
这将为您提供插入模式下的光束光标或正常模式下的块光标.
其他选项(替换后的数字\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).
Run Code Online (Sandbox Code Playgroud)
您的终端必须支持DECSCURSR(如xterm,urxvt,iTerm2).TMUX也支持这些(如果你TERM=xterm-256color在tmux外面设置).
Cla*_*key 11
经过多年在korn shell中使用vi模式,我基本上已经训练过自己只需点击ESC几次然后输入任何命令,ESC然后i开始输入.
基本的前提是,如果你只是点击ESC,你就会知道你所处的模式.