ビジュアルモードに入ったときにVimが相対行番号に切り替え、その後絶対番号に戻るようにしようとしています。次のように使用できる autocmd イベントがあること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