6

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

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 に答える