LoginSignup
6
3

More than 1 year has passed since last update.

コードリーディングを視覚的に助けるVimの機能やプラグイン

Last updated at Posted at 2021-10-11

この変数ってなんだっけ。この関数はどこから呼ばれているんだっけ。

脳のスタックには限度がありますし、そう簡単に鍛えられるものでもありません。

この記事では、普段のコードリーディングを少しでも楽にするために利用している、コードリーディングを視覚的に助けるVimの機能やプラグインを紹介します。

まずはVimの標準機能でできることから。

シンタックスハイライト

それはそう。それはそうなんですが、シンタックスハイライトは普通に大事です。

お気に入りのカラースキームを使えば良いと思います。個人的にはIcebergが好きです。

folding

折りたたみ機能ですね。

必要な情報を強調するのも大事ですが、余計な情報は見ないというのも大事です。

コードの概要を俯瞰したいとき、たとえば同階層のテストケースを一覧で見たいときなどでも重宝します。

image.png

zmで折りたたみ。zrで開きます。

次はプラグインの紹介。

vim-quickhl

単語に色を付けることができるプラグインです。

変数がどこで定義されたか、どこで使われたかが文字通りひと目で分かります。

色の情報は脳にダイレクトに届きますし、コードがどんどんカラフルになっていくのも楽しい。手放せないプラグインです。

image.png

Space h でノーマルモードではカーソル下の単語を、ビジュアルモードでは選んでいる箇所を色付けできるように設定しています。

dein.toml
[[plugins]]
repo = 't9md/vim-quickhl'
hook_add = '''
  nmap <Space>h <Plug>(quickhl-manual-this)
  xmap <Space>h <Plug>(quickhl-manual-this)
  nmap <Space>H <Plug>(quickhl-manual-reset)
'''

vim-brightest

カーソル下の単語と同じ単語に下線を引いてくれるプラグインです。

「カーソル位置から離れた場所で見た目の変化が起こる」というのは案外目立つもので、このプラグインを入れておくだけで変数の流れがだいぶ追いやすくなります。

日本語の箇所では動作してほしくないのでちょっとだけ設定。

dein.toml
[[plugins]]
repo = 'osyo-manga/vim-brightest'
hook_add = '''
  let g:brightest#highlight = { "group" : "BrightestUnderline" }
  let g:brightest#pattern = '\k\+'
'''

vim-signature

Vimにはコードの行に印を付けておくマーク機能が標準で備わってるのですが、このプラグインはそれを使いやすくしてくれます。

付けたマークが左に表示されるようになり、付けるマークを自動でABC順にすることもできます。

関数呼び出しの場所や順番のメモとして使っています。

image.png

Space mでABC順にマークの付け外しができるようにして使っています。

dein.toml
[[plugins]]
repo = 'kshenoy/vim-signature'
hook_add = '''
  let g:SignatureMap = { 'Leader' : "m", 'PlaceNextMark' : "", 'ToggleMarkAtLine' : "<Space>m", 'PurgeMarksAtLine' : "", 'DeleteMark' : "", 'PurgeMarks' : "", 'PurgeMarkers' : "", 'GotoNextLineAlpha' : "", 'GotoPrevLineAlpha' : "", 'GotoNextSpotAlpha' : "", 'GotoPrevSpotAlpha' : "", 'GotoNextLineByPos' : "", 'GotoPrevLineByPos' : "", 'GotoNextSpotByPos' : "", 'GotoPrevSpotByPos' : "", 'GotoNextMarker' : "", 'GotoPrevMarker' : "", 'GotoNextMarkerAny' : "", 'GotoPrevMarkerAny' : "", 'ListBufferMarks' : "", 'ListBufferMarkers' : "" }
  let g:SignatureIncludeMarks = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
'''

おわりに

脳に優しいコードリーディングを!

オススメの機能やプラグインがあったらコメントにて教えてもらえると滅茶苦茶助かります。

6
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3