【第二回Vim入門】ReaderとしてのVim
目次
快適にコードを読むこと
第一回では VSCode で Vim キーバインド に触れ、移動の基本と編集の足がかりになる i ・ Esc までを扱いました。お読みになっていない方は、先に第一回をご覧ください。
Vimをいきなりメインエディタとして実用レベルで身につけるには、時間と根気が必要です。そこでまずは、編集ではなくコードリーディングのためのツールとして使ってみることをおすすめします。そうすることで、このエディタのよさを実感しやすくなるはずです。
ということで、今回は編集機能の紹介はしません。 コードリーディングのための操作に絞って紹介します。ただし、ここで扱う内容は、あとから編集操作に入ったときにもきっと役立ちます。
単語のまとまりで読みを進める(w と b)
-
w / b:単語単位で前後へ移動
ここからは、ノーマルモードでコードリーディングをする場面を想定します。
w と b は、文字を一つずつ追うのではなく、単語のまとまりに合わせて移動するキーです。
第一回で紹介した h j k l が、いわばマス目を移動する感覚だとすれば、w と b は実際の視線の動きに近い移動だといえます。
読む位置を画面のなかで整える(zz)
zz:カーソル行を、画面の縦方向のだいたい中央へ
zz は、いま読んでいる行を視界の中央付近に置き直す操作です。長いブロックを読んでいるうちにカーソルは進んだものの、注目したい行が画面の端に寄って読みにくくなることがあります。そういうときに zz を押すと、フォーカスしている行を視界の中央付近に戻せます。
ファイルの端へ一発で(gg と G)
gg:ファイルの先頭行へG:ファイルの末尾行へ(43Gのように数字を前置すると、その行番号へ移動)
いま読んでいる位置をファイル全体の中で捉え直したいときや、ログやスタックトレースに出た行番号へ飛びたいときに便利です。
対応する括弧へ飛ぶ(%)
%:カーソルがある括弧(()[]{}など)と、その対になる括弧のあいだを往復します。
if 文や関数呼び出しの入れ子を読むときに、どこからどこまでがひとまとまりなのかを追いやすくなります。
段落の境で上下へ({ と })
{:いまの位置から、ひとつ上の段落のはじまりへ(空行で区切られた塊の単位)}:いまの位置から、ひとつ下の段落のおわりへ
ソースコードでは、関数やメソッド、まとまったコメントの境目にカーソルが止まりやすく、長いファイルを縦方向に読み進めるのに向いています。
検索で名前や文字列を辿る
/:検索(パターンを打って Enter で確定、nで次へ、Nで前へ)*:カーソル下の単語を、前方検索(n/Nで辿る)#:カーソル下の単語を、後方検索(n/Nで辿る)
/ は自由に文字列を打ち込めます。すでにカーソルがある識別子だけを辿りたいときは、打ち直しが要らない * や # のほうが手数が少ないのでおすすめです。いずれも確定後は n と N で辿っていきます。
定義を見に行き、読んでいた位置へ戻る
gd:カーソル下のシンボルの定義へジャンプ(VSCode の言語機能と連携)Ctrl+o:ジャンプ履歴を戻り、直前に読んでいた位置へ
gd は定義箇所へ飛びます。VSCodeのF12と同じ動作ですね。飛んだあとに元の場所へ戻りたいときは、Ctrl+o です。セットで覚えると往復が楽になります。筆者も、この組み合わせをよく使います。
キーボードだけで快適なコードリーディング
ここまでに紹介した機能を使うと、マウスとキーボードを行き来しながら読む従来のコードリーディングに比べて、かなり楽になるはずです。キーボードから手を離さずに済むので、視線も手元の動きも安定し、集中も途切れにくくなります。
今回は前回より多めにキーバインドを紹介しましたが、まずはよく使いそうなものから少しずつ試して、慣れていただければと思います。現時点では丸暗記でも構いません。次回の記事では、オペレータとモーションの考え方を通じて、ノーマルモードの命令の組み立て方を整理していく予定です。
株式会社オートプロジェクトでは、中小企業向けのシステム・アプリケーション開発 / 外注サービスを提供しております。
貴社のニーズに応じた柔軟なサポートを行いますので、ぜひお気軽にご相談ください。
