6

当我进入可视模式时,我试图让 Vim 切换到相对行编号,然后再切换回绝对编号。我注意到有InsertEnterInsertLeaveautocmd 事件,我可以这样使用:

autocmd InsertEnter :set rnu
autocmd InsertLeave :set nu

问题是,我似乎找不到视觉模式的等价物。

4

1 回答 1

5

视觉模式没有此类事件(尚未实现;您可以提交补丁)。要进入可视模式,您可以简单地覆盖进入可视模式的几个命令:

: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

的恢复'number'比较困难,因为除了通过显式退出之外<Esc>,还有很多命令会停止可视模式。我能想到的最好的方法是触发CursorMoved

vnoremap <Esc> <Esc>:set nu<CR>
:autocmd CursorMoved * if mode() !~# "[vV\<C-v>]" | set nu | endif
于 2012-11-12T14:24:17.503 回答