株式会社オートプロジェクト

【第二回Vim入門】ReaderとしてのVim

【第二回Vim入門】ReaderとしてのVim

快適にコードを読むこと

第一回では VSCode で Vim キーバインド に触れ、移動の基本と編集の足がかりになる iEsc までを扱いました。お読みになっていない方は、先に第一回をご覧ください。

【第一回Vim入門】VSCodeからVimを始めよう!

Vimをいきなりメインエディタとして実用レベルで身につけるには、時間と根気が必要です。そこでまずは、編集ではなくコードリーディングのためのツールとして使ってみることをおすすめします。そうすることで、このエディタのよさを実感しやすくなるはずです。

ということで、今回は編集機能の紹介はしません。 コードリーディングのための操作に絞って紹介します。ただし、ここで扱う内容は、あとから編集操作に入ったときにもきっと役立ちます。

単語のまとまりで読みを進める(wb

  • w / b:単語単位で前後へ移動

ここからは、ノーマルモードでコードリーディングをする場面を想定します。

wb は、文字を一つずつ追うのではなく、単語のまとまりに合わせて移動するキーです。

第一回で紹介した h j k l が、いわばマス目を移動する感覚だとすれば、wb は実際の視線の動きに近い移動だといえます。

読む位置を画面のなかで整える(zz

  • zz:カーソル行を、画面の縦方向のだいたい中央へ

zz は、いま読んでいる行を視界の中央付近に置き直す操作です。長いブロックを読んでいるうちにカーソルは進んだものの、注目したい行が画面の端に寄って読みにくくなることがあります。そういうときに zz を押すと、フォーカスしている行を視界の中央付近に戻せます。

ファイルの端へ一発で(ggG

  • gg:ファイルの先頭行へ
  • G:ファイルの末尾行へ(43G のように数字を前置すると、その行番号へ移動)

いま読んでいる位置をファイル全体の中で捉え直したいときや、ログやスタックトレースに出た行番号へ飛びたいときに便利です。

対応する括弧へ飛ぶ(%

  • %:カーソルがある括弧(() [] {} など)と、その対になる括弧のあいだを往復します。

if 文や関数呼び出しの入れ子を読むときに、どこからどこまでがひとまとまりなのかを追いやすくなります。

段落の境で上下へ({}

  • {:いまの位置から、ひとつ上の段落のはじまりへ(空行で区切られた塊の単位)
  • }:いまの位置から、ひとつ下の段落のおわり

ソースコードでは、関数やメソッド、まとまったコメントの境目にカーソルが止まりやすく、長いファイルを縦方向に読み進めるのに向いています。

検索で名前や文字列を辿る

  • /:検索(パターンを打って Enter で確定、n で次へ、N で前へ)
  • *:カーソル下の単語を、前方検索(n / N で辿る)
  • #:カーソル下の単語を、後方検索(n / N で辿る)

/ は自由に文字列を打ち込めます。すでにカーソルがある識別子だけを辿りたいときは、打ち直しが要らない *# のほうが手数が少ないのでおすすめです。いずれも確定後は nN で辿っていきます

定義を見に行き、読んでいた位置へ戻る

  • gd:カーソル下のシンボルの定義へジャンプ(VSCode の言語機能と連携)
  • Ctrl+o:ジャンプ履歴を戻り、直前に読んでいた位置へ

gd定義箇所へ飛びます。VSCodeのF12と同じ動作ですね。飛んだあとに元の場所へ戻りたいときは、Ctrl+o です。セットで覚えると往復が楽になります。筆者も、この組み合わせをよく使います。

キーボードだけで快適なコードリーディング

ここまでに紹介した機能を使うと、マウスとキーボードを行き来しながら読む従来のコードリーディングに比べて、かなり楽になるはずです。キーボードから手を離さずに済むので、視線も手元の動きも安定し、集中も途切れにくくなります。

今回は前回より多めにキーバインドを紹介しましたが、まずはよく使いそうなものから少しずつ試して、慣れていただければと思います。現時点では丸暗記でも構いません。次回の記事では、オペレータとモーションの考え方を通じて、ノーマルモードの命令の組み立て方を整理していく予定です。

エンジニアのみなさまへ

株式会社オートプロジェクトでは、中小企業向けのシステム・アプリケーション開発 / 外注サービスを提供しております。

貴社のニーズに応じた柔軟なサポートを行いますので、ぜひお気軽にご相談ください。

中小企業向けシステム・アプリケーション開発 / 外注サービスについて、オートプロジェクトに問い合わせをする

Contact ご相談・お問い合わせ

実現の可否や概算費用、納期に関するご質問・ご相談も、
どうぞご遠慮なくお問い合わせください。

お問い合わせ ご相談・お問い合わせ
TOP