Bash Vi命令行编辑中命令模式和插入模式的区分方法
当bash在vi模式下切换到insert模式时,我总是有点困惑,因为它没有给出任何关于使用模式命令或编辑的提示。Bash Vi命令行编辑中命令模式和插入模式的区分方法,bash,vi,command-line-interface,Bash,Vi,Command Line Interface,当bash在vi模式下切换到insert模式时,我总是有点困惑,因为它没有给出任何关于使用模式命令或编辑的提示。 有没有办法区分mods?可能是光标颜色的自动改变或类似的东西?在korn shell中使用vi模式多年后,我基本上训练自己在键入任何命令之前只需轻触ESC几次,然后按ESC开始键入 基本前提是,如果您刚刚按下ESC键,您就可以准确地知道自己处于什么模式。在/etc/inputrc或~/.inputrc中添加以下内容: set show-mode-in-prompt on 在bash
有没有办法区分mods?可能是光标颜色的自动改变或类似的东西?在korn shell中使用vi模式多年后,我基本上训练自己在键入任何命令之前只需轻触ESC几次,然后按ESC开始键入
基本前提是,如果您刚刚按下ESC键,您就可以准确地知道自己处于什么模式。在/etc/inputrc或~/.inputrc中添加以下内容:
set show-mode-in-prompt on
在bash4.3中,当处于插入模式时,这将在提示符前面加上+和:当处于命令模式时
编辑:
在最新版本的bash4.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"
基于@Isaac Hanson的答案,您可以通过在.inputrc中设置这些选项来设置光标样式以反映模式,就像在VIM中一样: 这将为您提供插入模式下的梁光标或正常模式下的块光标 其他选项替换\e[]之后的数字:
您的终端必须支持诸如xterm、urxvt、iTerm2之类的decscurs。如果您在TMUX外部设置TERM=xterm-256color,TMUX也支持这些。挑剔:您的意思是它是在正常模式还是在插入模式下,因为没有编辑模式,bash也没有实现命令模式OK,根据一些名称,它们被命名为命令模式和插入模式。所以我和你的观点都是半真半假。如果切换到zsh是一个选项,这是受支持的。看。哦,哇。事实上,我几天前才切换到zsh。你的建议出现得很及时:关于术语,使用术语插入模式和命令模式。四年了。从哪一个版本开始可用?从Readline中的4.3新功能开始j.是否可以同时设置光标和前缀?@MartianTomatoes是的,只需将其附加到字符串值您有到源的链接吗?@winklerrr:一个正确的参考是:-按最后一个字符排序。查找标题CSI Ps SP q大约向下一半的部分。这会导致相当简洁的阅读。警告您!@bloody-在插入模式下按enter键时,它首先切换到命令模式\e=ESC,在运行命令之前更新光标
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"
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).