2012-11-12 56 views
5

我試圖讓Vim在進入可視模式時切換到相對行編號,然後返回到絕對編號。我注意到有InsertEnterInsertLeave自動命令事件,我可以用這樣的:如何在Vim的可視模式中激活相關行編號?

autocmd InsertEnter :set rnu 
autocmd InsertLeave :set nu 

問題是,我似乎無法找到可視模式等同。

回答

5

對於可視模式沒有這種事件(尚未實現;您可以提交補丁)。對於進入可視化模式,你可以簡單地重寫進入可視化模式的幾個命令:的'number'

:nnoremap <silent> v v:<C-u>set nonu rnu<CR>gv 
:nnoremap <silent> V V:<C-u>set nonu rnu<CR>gv 
:nnoremap <silent> <C-v> <C-v>:<C-u>set nonu rnu<CR>gv 

的恢復是比較困難的,因爲除了通過<Esc>明確退出,有視覺的停止模式許多命令。最好我能拿出來就是一個觸發器CursorMoved

vnoremap <Esc> <Esc>:set nu<CR> 
:autocmd CursorMoved * if mode() !~# "[vV\<C-v>]" | set nu | endif 
相關問題