我使用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”。但我不知道我可以通过什么作为逃脱序列。
答案 0 :(得分:6)
在进一步挖掘:help
之后,我发现了
autocmd VimLeave * let &t_me="\<Esc>]50;CursorShape=1\x7"
会将光标形状恢复为其初始值,或者说是一个已定义的形状。 到目前为止效果很好。
有谁知道这种方法的缺点?除VimLeave
之外,还可以触发VimLeavePre
或QuitPre
。
编辑: 更好的是有一个新的插件可以完全满足一些人的需求。
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