2011-11-01

[小ネタ][Vim] number / relativenumber オプションを気軽に切り替える

このエントリーをはてなブックマークに追加
巷ではVim熱が沸騰していてリア充率が意外と高いことが発覚したとか。


かなり今さらではありますが、
Vim7.3の新機能として'relativenumber'オプションが追加されてますね。
relativenumberとは、
カレント行からの相対的な行番号を表示するオプションです。






上の画像で言うとピッコロ色に光ってるのがカレント行で、
そこから相対的に5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, ... と行番号が振られてますが、こんな感じです。
vimmerならよくやる行数指定の削除やヤンク、移動等の操作をする時にこれは便利ですね。

ex.) {\d}dj , {\d}yk


ちなみにrelativenumberオプションを有効にすると
numberオプション(通常の行番号を表示)がリセットされます。
つまりは通常の行番号と相対的な行番号を同時に表示することは今のところできません。

でも毎回行数指定が発生する操作の前に
relativenumberオプションを有効にするのもアレだし、
常にrelativenumberオプションを有効にしておくのも
個人的には好きになれません。(set number派)



というわけで "number / relativenumber" オプションをトグルするスクリプトをvimrcに書きましょう。



if version >= 703
  nnoremap  <silent> ,n :<C-u>ToggleNumber<CR>
  command! -nargs=0 ToggleNumber call ToggleNumberOption()

  function! ToggleNumberOption()
    if &number
      set relativenumber
    else
      set number
    endif
  endfunction
endif

最初の条件分岐ですが、
relativenumberオプションはVim7.3以降の機能ですので、
7.3より前のヴァージョンでは適用しないようにします。

後は単純でnumberオプションが有効ならrelativenumberに切り替え、
そうでないならnumberオプションを有効にします。

mappingの「,n」は好きに変えてくださいまし。

これでnomal-modeでmapping定義したコマンド叩くと
状況に合わせnumber / relativenumber オプションが気軽に切り替わります。

INFO:
    :help relativenumber

0 件のコメント:

コメントを投稿