vim 设置插入模式使用不同的光标

主要看这里 http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes

fedora 20

gvim 下普通模式是一个光标块. 插入模式下是一个更细的.

可是konsole下开vim都是一样的.

找到这里说了 [ Change cursor shape in different modes](http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes .md)

于是照着改.vimrc加入

let &t_SI = "\<Esc>]50;CursorShape=1\x7"
let &t_EI = "\<Esc>]50;CursorShape=0\x7"

可是还是不起作用.

拍拍头才想起来,我用的是tmux,得这样改

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

这就ok了,只是有点小问题:从插入模式回普通模式有点迟缓,按下Esc后,要等1~2s细细的柱状才会变粗.又不是JJ,为什么刺激了还要等一等才会变粗…

mac

我现在换成 mac 了, mac 下 iTerm2 还有办法, 可是 mac os 自带的 terminal 就没有办法的样子了.

ubuntu 17 For the Gnome-Terminal (version ≥3.16)

if has("autocmd")
  au VimEnter,InsertLeave * silent execute '!echo -ne "\e[2 q"' | redraw!
  au InsertEnter,InsertChange *
    \ if v:insertmode == 'i' | 
    \   silent execute '!echo -ne "\e[6 q"' | redraw! |
    \ elseif v:insertmode == 'r' |
    \   silent execute '!echo -ne "\e[4 q"' | redraw! |
    \ endif
  au VimLeave * silent execute '!echo -ne "\e[ q"' | redraw!
endif