Vim 重置或将光标形状设置在“上”;“离开”;

Vim 重置或将光标形状设置在“上”;“离开”;,vim,cursor,shape,Vim,Cursor,Shape,我在OS X 10.7.5上使用iTerm2(构建1.0.0.20130319)和Vim(MacVim快照66的bin)作为我的CLI编辑团队 在iTerm2中,我定义使用不闪烁的垂直条作为光标形状。 在Vim中,我定义了 " Enter insert mode (Cursor shape: vertical bar) let &t_SI = "\<Esc>]50;CursorShape=1\x7" " Leave insert mode (Cursor shape: bl

我在OS X 10.7.5上使用iTerm2(构建1.0.0.20130319)和Vim(MacVim快照66的bin)作为我的CLI编辑团队

在iTerm2中,我定义使用不闪烁的垂直条作为光标形状。 在Vim中,我定义了

" Enter insert mode (Cursor shape: vertical bar)
let &t_SI = "\<Esc>]50;CursorShape=1\x7"

" Leave insert mode (Cursor shape: block)
let &t_EI = "\<Esc>]50;CursorShape=0\x7"
进入插入模式(光标形状:垂直条) 让&t_-SI=“\]50;光标形状=1\x7“ “离开插入模式(光标形状:块) 让&t\u EI=“\]50;光标形状=0\x7” 能够区分插入模式和正常模式。基本上这很好用。当我离开Vim并返回CLI时,问题就出现了。发生的情况是,光标不会以其初始形状(垂直条)返回。相反,它决定保持块形状

我是否可以将光标重置为其初始形状或强制其返回为竖条?我可以想象在“VimLeave”上触发一个事件。但我不知道我可以传递什么作为转义序列。

你试过这个吗

autocmd VimLeave * let &t_SI = "\<Esc>]50;CursorShape=1\x7"
autocmd vimleeve*let&t\u SI=“\]50;光标形状=1\x7”

我以前尝试过这种方法,因为切换到终端时我习惯了Gvim的光标样式。但我遇到了同样的问题,没有办法解决它

最后我一直在使用改变光标颜色的方法。一旦我习惯了这种风格,我很高兴它,并且完全忘记了光标的形状

改变光标颜色法

autocmd InsertEnter * set cul
autocmd InsertLeave * set nocul
然后,如果主题中没有内置方案,则为主题中的
光标
设置与
正常
相似但不同的颜色

资料来源:

识别终端插入模式的三种方法之和:

再深入一点
:help
我发现了

autocmd VimLeave * let &t_me="\<Esc>]50;CursorShape=1\x7"

我正在使用带有常规vim的Iterm。这将在启动vim上设置光标实心,在插入模式下闪烁。并在退出vim时返回闪烁状态

augroup myCmds
au!
autocmd VimEnter * silent !echo -ne "\e[2 q"
autocmd VimLeave * silent !echo -ne "\e[1 q"
augroup END

是的。它的行为不符合预期。结果与上面相同,作为一个副作用,在正常模式和插入模式之间切换时,它不再改变形状
augroup myCmds
au!
autocmd VimEnter * silent !echo -ne "\e[2 q"
autocmd VimLeave * silent !echo -ne "\e[1 q"
augroup END