2016/10/18 21:09:53

[ vim ]便利オプション 「relativenumber」で 行番号を相対位置にする

Vim-editor_logo
目次(クリックするとジャンプします)
  • 1:vimオプション
  • 1.1:relativenumber
  • 1.2:numberとの併用
  • 2:補足・ハマりポイント
  • 3:おまけ
  • 3.1:相対表示・絶対表示を切り替える
  • 3.2:相対表示・絶対表示をキーバインド
  • 4:後記

vimオプション

vimを使っていて行番号関係の便利だなと思ったオプション紹介です。

relativenumber

relativenumber

このオプションを有効にすると、現在のカーソル位置からの相対位置が表示されるようになります。

行番号と排他的なようなので、場合によっては使いにくいと感じる人もいるかもしれないですが、縦方向の移動に関して、行を数えなくて済みます。

jkでの移動とかddやyyなど範囲を早くしやすくなります。

こんな感じになります。

vim relativenumber

カレント行は0が、そしてカレント行からの相対番号が上下に続いていきます。

そのため例えば相対表示で9となっている行は10行目ということですので、ddやyyをする時は10を指定してあげる必要があります。

相対番号+1が到達番号になるということですね。

numberとの併用

vimにはnumberというオプションがあります。行番号を表示させるオプションです。relativenumbernumberを併用することもできます。

vim relativenumber number

この時はカレント行が絶対行番号になり、その他の行が相対行番号になります。これなら行番号もわかるし、行の距離もわかるので便利っぽい気がします。

補足・ハマりポイント

relativenumberの挙動はvimバージョンなどによって少し異なるようです。@MINOはこの記事を書いている時点では7.4.567を使っています

relativenumberの実装はVim7.3だそうで、7.3未満のバージョンだと効かないとのこと。

またnumberとの併用でカレント行が絶対表示なるのはvim7.4以降のようです。

おまけ

相対表示・絶対表示を切り替える

set numberset relativenumberを併用して設定している場合にコマンドモードから

:set relativenumber!

とすることで、絶対表示と相対表示を切り替えることができます。

relativenumberの後ろのびっくらマークはオンオフ切り替えオプションです。invをつかっても同じことができますです。

:set invrelativenumber

インバース!!

相対表示・絶対表示をキーバインド

上記の仕組みをキーバインドしてみました。

vimrcにて

map <F12> :set relativenumber!<CR>

を追加。

書式 意味
map ノーマルモード、ビジュアルモード、オペレータ待機モードで有効なマッピングにする
<F12> ファンクションキーの12です。これは任意のキーでOKデス。
:set relativenumber! トグルさせるコマンド
<CR> キャリッジリターン、いわゆるリターンキーを押したのと同じことです。つまりコマンドを決定したということになります。

これでF12を押すごとに行番号が絶対・相対に切り替わります。

relativenumber_keybind

後記

行計算すぐにできる人はいいなぁぁぁ。