在“VimLeave”上重置或设置光标形状

时间:2013-03-21 13:49:10

标签: vim cursor shape

我使用iTerm2(Build 1.0.0.20130319)和Vim(MacVim Snapshot 66的bin)作为我的CLI编辑团队在OS X 10.7.5之上。

在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"

能够区分插入和普通模式。基本上这很好用。当我离开Vim并返回CLI时出现问题。会发生什么是光标不会返回其初始形状(垂直条)。相反,它决定保持块状。

我可以将光标重置为初始形状还是强制它返回垂直条?我可以想象在例如触发事件“VimLeave”。但我不知道我可以通过什么作为逃脱序列。

4 个答案:

答案 0 :(得分:6)

在进一步挖掘:help之后,我发现了

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

会将光标形状恢复为其初始值,或者说是一个已定义的形状。 到目前为止效果很好。

有谁知道这种方法的缺点?除VimLeave之外,还可以触发VimLeavePreQuitPre

编辑: 更好的是有一个新的插件可以完全满足一些人的需求。

https://github.com/jszakmeister/vim-togglecursor

它也有点可配置:

let g:togglecursor_default = "block"
let g:togglecursor_insert = "line"
let g:togglecursor_leave = "line"
let g:togglecursor_disable_tmux = 0

答案 1 :(得分:1)

你试过这个吗?

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

答案 2 :(得分:0)

之前我尝试过这种方法,因为切换到终端时我习惯了Gvim的光标样式。但我遇到了同样的问题,无法修复它。

最后我一直在使用更改Cursor颜色方法。一旦我习惯了这种风格,我就很开心,完全忘记光标的形状。

更改光标颜色方法

autocmd InsertEnter * set cul
autocmd InsertLeave * set nocul

如果此主题中没有内置方案,则为主题中的Cursor设置相似但不同的Normal颜色。

来源:http://vim.wikia.com/wiki/Configuring_the_cursor

我在终端中识别插入模式的三种方法之和: How to make cursor change in different modes in vim?

答案 3 :(得分:0)

我正在使用常规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
相关问题