如何在Insert / Normal模式下更改vim光标?
我想知道,如果可能的话,如何改变光标在vim(颜色,形状等),取决于你在什么模式。
我经常忘记我不在插入模式,并开始input代码,这会导致各种疯狂的事情发生。 如果光标上有某种可视的指示,这将是有帮助的。
除了别的之外,我通常将当前的vim模式放到状态栏中。 如果您寻求简单性,您只能将此信息设置到状态行上 。
然而,通常情况下,真正的疯狂的事情发生时,你有大写locking抑郁症,并在命令模式(因为hjkl现在是HJKL – 只是J和K足以让你拉你的头发,当你不明白发生了什么事情。 :h J
和:h K
看看我的意思)。 只要小心大写locking键 ,大部分时间IMO你会没事的。
指示切换到插入模式(以及返回正常模式)的stream行选项是切换cursorline
选项,该选项负责是否突出显示当前屏幕行。
:autocmd InsertEnter,InsertLeave * set cul!
要么
:autocmd InsertEnter * set cul :autocmd InsertLeave * set nocul
要在不同的模式下改变光标的形状,你可以在你的vimrc中添加以下内容。
对于Gnometerminal(版本2.26)编辑
if has("autocmd") au InsertEnter * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam" au InsertLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block" au VimLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam" endif
如果您在gnome-terminal中使用多个configuration文件,则可能需要将其调整为您的configuration文件。
对于KDE4Edit中的Konsole
let &t_SI = "\<Esc>]50;CursorShape=1\x7" let &t_EI = "\<Esc>]50;CursorShape=0\x7"
这适用于多个选项卡和窗口。
http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes
如果您在OSX上使用tmux和iTerm2 ,
以下将光标从一个块更改为一个光标并高亮显示当前行
if exists('$TMUX') let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1\x7\<Esc>\\" let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0\x7\<Esc>\\" else let &t_SI = "\<Esc>]50;CursorShape=1\x7" let &t_EI = "\<Esc>]50;CursorShape=0\x7" endif :autocmd InsertEnter * set cul :autocmd InsertLeave * set nocul
信用: https : //gist.github.com/andyfowler/1195581
我发现只有光标在插入模式下闪烁,在其他模式下才是有用的。
set guicursor+=nvc:blinkon0
对于xterm / urxvt / …(Linux),iTerm2(Mac)和ConEmu(Windows)的Git Bash以下工作:
let &t_SI = "\e[6 q" let &t_EI = "\e[2 q" " optional reset cursor on start: augroup myCmds au! autocmd VimEnter * silent !echo -ne "\e[2 q" augroup END
当你使用tmux时,像这样使用它是很重要的(没有\<Esc>Ptmux;
escape) – 当你切换窗口/窗格时,tmux将跟踪正确的光标形状。 如果它不起作用,可能需要在启动tmux之前设置TERM=xterm-256color
。
其他选项(replace\ 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).