2

我在 OS X 10.7.5 上使用 iTerm2(Build 1.0.0.20130319)和 Vim(MacVim Snapshot 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"

能够区分插入模式和正常模式。基本上这工作正常。当我离开 Vim 并返回 CLI 时,问题就出现了。发生的情况是光标没有返回其初始形状(垂直条)。相反,它决定保持块状。

我可以将光标重置为其初始形状或强制它返回为垂直条吗?我可以想象在例如“VimLeave”上触发一个事件。但我不知道我可以通过什么作为转义序列。

4

4 回答 4

7

经过一点点深入:help研究后,我发现

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

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

有谁知道这种方法的缺点?除此之外VimLeave还可以触发VimLeavePreor 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
于 2013-03-22T00:22:08.573 回答
1

你试过这个吗?

autocmd VimLeave * let &t_SI = "\<Esc>]50;CursorShape=1\x7"
于 2013-03-21T14:19:27.047 回答
1

我将 Iterm 与常规 vim 一起使用。这会在启动 vim 时设置光标固定,在插入模式下闪烁。并在退出 vim 时返回闪烁。

augroup myCmds
au!
autocmd VimEnter * silent !echo -ne "\e[2 q"
autocmd VimLeave * silent !echo -ne "\e[1 q"
augroup END
于 2017-04-13T17:36:07.387 回答
0

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

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

更改光标颜色方法

autocmd InsertEnter * set cul
autocmd InsertLeave * set nocul

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

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

我在终端中识别插入模式的三种方法的总和: 如何在vim中使光标在不同模式下发生变化?

于 2013-03-21T14:50:38.553 回答