当我进入可视模式时,我试图让 Vim 切换到相对行编号,然后再切换回绝对编号。我注意到有InsertEnter
和InsertLeave
autocmd 事件,我可以这样使用:
autocmd InsertEnter :set rnu
autocmd InsertLeave :set nu
问题是,我似乎找不到视觉模式的等价物。
视觉模式没有此类事件(尚未实现;您可以提交补丁)。要进入可视模式,您可以简单地覆盖进入可视模式的几个命令:
: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