文字を書き足す
Vimには「入力を始める」キーが6つあります。どれも挿入モードに入る点は同じで、違うのは入力が始まる位置だけです。適切なものを選べば、入力を始める前のカーソル合わせが要らなくなります。
6つの違いは「どこから始まるか」だけ
i(カーソルの前)と a(カーソルの後ろ)が基本で、それぞれの大文字 I A が行の端まで移動してから入力を始める版です。o O は行を1つ作ってから入力を始めます。
どれを使っても入力できる内容は同じなので、間違えて i を押しても Esc で戻ってやり直せます。ただし「移動してから i」を毎回やっていると手数が増えるので、行末なら A、行頭なら I、と選べるようになるのが目標です。
a が要る場面
ノーマルモードのカーソルは行の最後の文字までしか進めません。そのため「行の最後の文字の後ろ」には l では行けず、a(または A)を使う必要があります。
逆に言えば、挿入モードの間だけはカーソルが1文字ぶん先まで進めます。Esc で戻るとカーソルが1つ左に動くのはこのためです。
挿入モードのまま消せるキー
打ち間違えたときに Esc で抜けて直すのは手数がかかります。挿入モードのままでも Ctrl-w で直前の1単語、Ctrl-u で入力を始めてからこの行に打った内容を消せます。どちらもシェルの行編集と同じキーなので、ターミナルを使っている人には馴染みがあるはずです。
もう1つよく使うのが Ctrl-r で、続けてレジスタの名前を打つとその中身がその場に挿入されます。Ctrl-r " なら直前にコピーや削除した内容です。抜けて p で貼って入り直す、という往復を省けます。
o と O はインデントを引き継ぐ
o O で行を作ると、autoindent が有効な場合は元の行と同じ深さまで字下げされた状態から入力が始まります。ネストの深いコードを書き足すときに Tab を打ち直さずに済みます。
ただし字下げしたまま何も打たずに Esc を押すと、行末に空白だけが残ることがあります。Vimはこれを自動で削るようになっていますが、他のエディタと共有しているファイルでは差分に空白が出ることがあるので、気になる場合は保存前に確認してください。
gi で前回の続きから入力する
入力を中断して別の場所を確認しに行ったあと、gi を押すと、最後に挿入モードを抜けた位置に戻って挿入モードで再開できます。どこまで打ったか探し直す手間が消えます。
似た用途に `^ というマークがあり、こちらはノーマルモードのまま最後の挿入位置へ移動します。第5章のマークと同じ仕組みで、Vimが自動で付けているマークの1つです。
このレッスンで扱うキー
| キー | 動き |
|---|---|
| i | カーソルの前から入力 |
| a | カーソルの後ろから入力 |
| I | 行の最初の文字の前から入力 |
| A | 行末から入力 |
| o | 下に空行を作って入力 |
| O | 上に空行を作って入力 |