位置を覚えて戻る
長いファイルで、いま見ている場所と別の場所を行ったり来たりしたいことがあります。マークは現在位置に名前を付けておく機能で、どれだけ離れても一発で戻れます。
小文字と大文字の違い
小文字のマーク(a から z)はそのファイルの中だけで有効です。大文字(A から Z)はファイルをまたいで有効で、別のファイルを開いていても 'A でそのファイルの位置へ飛べます。
記録した位置は画面に表示されないので、どこに何を付けたか分からなくなったら :marks で一覧できます(この練習ページでは扱っていません)。
自動で付くマーク
自分で付けなくても、Vimがいくつかのマークを自動で記録しています。よく使うのは ''(シングルクォート2つ)で、直前に大きく移動する前の位置に戻ります。G でファイルの末尾へ飛んだあと '' と押せば、元いた場所に帰れます。
ほかに `.(最後に変更した位置)や `^(最後に挿入モードを抜けた位置)などがあります。「さっき編集していたところ」に戻りたいときはこれが速いです。
'a と `a は範囲の単位が違う
'a(シングルクォート)はマークを付けた行の先頭へ、`a(バッククォート)は付けたときの桁も含めた正確な位置へ移動します。移動するだけならどちらでも大差ありませんが、削除やコピーの範囲として使うと結果が変わります。
d'a はマークの行までを行単位で消すので、行が丸ごと消えます。d`a は文字単位なので、行の途中から途中までが消えます。行を扱いたいのか文字を扱いたいのかで、クォートを打ち分けてください。
マークは編集しても付いてくる
マークを付けた行より上に行を足したり消したりしても、マークはその行を追いかけます。行番号を覚えておくのと違って、編集でずれないのがマークの利点です。
ただしマークを付けた行そのものを消すと、マークは失われます。長い作業の途中で目印が効かなくなったときは、その行を消していないかを疑ってください。
付ける場所の決め方
26個あっても実際に使い分けられるのは数個です。よく使われるのは、いま直している場所に a、参照しに行く場所に b、というように役割で決めておくやり方です。何に使ったか覚えていられる数に絞るのが要点になります。
行き来するだけなら、マークを付けずに Ctrl-o や '' で足りることも多くあります。次のレッスンで扱うジャンプの履歴と使い分けると、覚える負担が減ります。
このレッスンで扱うキー
| キー | 動き |
|---|---|
| ma | いまの位置を a として記録 |
| 'a | a の行の先頭へ |
| `a | a の位置へ(桁まで) |