反省はしても後悔はしない

Vim とか備忘録とか。それと関数型言語勉強中

なんか Vim の relativenumber オプションの仕様が変わったっぽい

私は set relativenumbr するのが好きです。ちょっと前のパッチでカーソルのある行だけ普通の行番号を表示、それ以外で相対行数の表示という感じになっていたので気に入って使ってました。

ところが、最新のパッチ*1を含めてビルドするとカーソル行の現在行数表示の仕様が変わってしまったようです。 具体的には、set numberset relativenumbr が両方指定されているとカーソル行が現在行数、その他が相対行数になるようです。

私は numberrelativenumbr をトグルさせるコマンドを作ってたのですが、それを作り直すはめになりました。

以下が最新のパッチに対応しつつ、前のバージョンでも使えるトグルコマンドです。

nnoremap [Toggle]n :<C-u>call ToggleNumber()<CR>
nnoremap [Toggle]r :<C-u>call ToggleRelativeNumber()<CR>
function! ToggleNumber()
  if &l:number && !&l:relativenumber
    setlocal nonumber
  else
    setlocal number
  endif
  setlocal norelativenumber
endfunction
function! ToggleRelativeNumber()
  if &l:number && &l:relativenumber
    setlocal nonumber
    setlocal norelativenumber
  else
    setlocal number
    setlocal relativenumber
  endif
endfunction

*1:多分1115くらいから