当我进入可视模式时,我正试图让Vim切换到相对行编号,然后回到绝对编号.我注意到有InsertEnter和InsertLeaveautocmd事件,我可以像这样使用:
autocmd InsertEnter :set rnu
autocmd InsertLeave :set nu
Run Code Online (Sandbox Code Playgroud)
问题是,我似乎无法找到视觉模式的等效物.
视觉模式没有此类事件(尚未实施;您可以提交补丁).要进入可视模式,您只需覆盖进入可视模式的少数命令:
: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
Run Code Online (Sandbox Code Playgroud)
恢复'number'更加困难,因为除了显式退出via之外<Esc>,还有许多命令可以停止视觉模式.我能想出的最好的是触发器CursorMoved:
vnoremap <Esc> <Esc>:set nu<CR>
:autocmd CursorMoved * if mode() !~# "[vV\<C-v>]" | set nu | endif
Run Code Online (Sandbox Code Playgroud)