我正在尝试让Vim在进入可视模式时切换到相对行号,然后在退出可视模式后恢复到绝对行号。我注意到有InsertEnter
和InsertLeave
自动命令事件,可以像下面这样使用:
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
vnoremap <Esc> <Esc>:set nu<CR>
让我在可视模式下按下向下箭头键时会打出字母B
,而不是高亮文本。 - mareoraft