2013-03-21 36 views
2

我在OS X 10.7.5上使用iTerm2(Build 1.0.0.20130319)和Vim(MacVim Snapshot 66的bin)作爲我的CLI編輯團隊。在「VimLeave」上重置或設置光標形狀

在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」。但我不知道我可以通過什麼作爲轉義序列。

回答

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

你試過這個嗎?

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

是的,我做到了。它不像預期的那樣。結果與上述相同,因爲它在正常模式和插入模式之間切換時不會改變形狀。 – Saucier 2013-03-21 14:38:39

0

我之前試過這個方法,因爲我在切換到終端時習慣了Gvim的光標風格。但是我遇到了同樣的問題,無法解決它。

最後我一直在使用改變光標顏色的方法。一旦我習慣了這種風格,我很高興並忘記了光標的形狀。

更改光標顏色方法

autocmd InsertEnter * set cul 
autocmd InsertLeave * set nocul 

然後在設定的主題相似,但不同的顏色CursorNormal如果在這個主題沒有內置方案。

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

我的三種方法識別插入模式在終端總和: How to make cursor change in different modes in vim?

0

我使用ITERM定期活力。這會在啓動vim時將光標固定,在插入模式下閃爍。並返回閃爍在vim退出。

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