← Vim道場

画面の上と下へ飛ぶ

gg と G はファイルの端へ飛びますが、いま見えている範囲の中で動きたいこともあります。H M L は画面の一番上・真ん中・一番下へ一気にカーソルを運ぶキーです。

第1章 まず動かすレッスン 4 / 36

「画面の」上下であってファイルの上下ではない

H M L が見ているのは、いま画面に映っている範囲です。1000行のファイルを開いて真ん中あたりまでスクロールしていれば、H で飛ぶのは1行目ではなく「画面の一番上に映っている行」になります。ファイルの端へ飛ぶ gg G とはここが違います。

この練習ページのエディタはバッファ全体が常に見えているので、結果としては1行目・真ん中の行・最終行と同じ位置に止まります。長いファイルで試すと違いがはっきりします。

スクロールと組で覚える

本物のVimでは zt(今の行を画面の上端へ)zz(真ん中へ)zb(下端へ)で画面のほうを動かせます。H M L がカーソルを画面に合わせるのに対して、zt zz zb は画面をカーソルに合わせる、という関係です。

読み進めるときは L で画面の下まで行き、Ctrl-f で次のページへ、という往復がよく使われます。

H と L は数字を取る

HL は前に数字を付けられます。3H なら画面の上から3行目、2L なら下から2行目です。画面に映っている行がだいたい上から何番目か見当が付くときは、数えて飛んだほうが検索より速いことがあります。

M だけは数字を受け取らず、常に画面の中央です。

scrolloff を設定していると止まる位置が変わる

scrolloff はカーソルの上下に最低何行残すかを指定するオプションです。set scrolloff=3 にしていると、H で行けるのは画面の一番上ではなく上から4行目になります。設定した覚えがあるのに H が上端まで行かない、というときはこれが理由です。

値は :set scrolloff? で確認できます。画面の端まで確実に行きたい場面では、一時的に set scrolloff=0 にします。

H M L が向くのは見えている範囲を直すとき

この3つが効くのは、いま映っている画面の中で作業が完結するときです。関数1つが画面に収まっている状態で、上のほうの引数を直して下のほうの return を直す、といった往復が典型的な使い方になります。

逆に、画面の外にある行へ行きたいときは出番ではありません。行番号を指定するか検索で飛ぶほうが確実です。画面の位置を基準にするか、ファイルの中身を基準にするかで使い分けます。

このレッスンで扱うキー

キー動き
H画面の一番上の行へ
M画面の真ん中の行へ
L画面の一番下の行へ

関連記事

レッスン一覧へ戻るキーの逆引き一覧検定を受ける