1文字だけ直す
打ち間違いを1文字だけ直したいとき、i で挿入モードに入って消して打ち直す……という手順は遠回りです。Vimには「その場で1文字だけ差し替える」キーが用意されています。
r と s の使い分け
r は文字数が変わらない差し替え、s は文字数が変わる差し替えです。1 を 2 にするなら r2、x を count にするなら s と覚えると迷いません。
r は挿入モードに入らないので、直したあとすぐ . で繰り返せます。同じ文字を何か所も直すときに効きます。
大文字は「行」か「モード」
s の大文字 S は1行ぶん、r の大文字 R は「ずっと置換し続けるモード」になります。S は cc と、s は cl とまったく同じ動きです。
置換モードは、表のように桁を揃えたテキストを崩さずに直したいときに向いています。普段の編集では c 系のほうが出番が多いでしょう。
r で改行に置き換えられる
r のあとに Enter を押すと、その1文字が改行に置き換わり、行がそこで2つに分かれます。長すぎる行を切りたいときに、挿入モードへ入らずに済む短い手順です。
逆の操作は第5章で扱う J で、2つの行を1つにつなぎます。行を分けるのが r Enter、つなぐのが J と対で覚えると思い出しやすくなります。
r も数字を取る
3ra と打つと、カーソル位置から3文字が a 3つに置き換わります。区切り線を引き直すときや、桁を保ったまま伏せ字にしたいときに使えます。
行に残っている文字数より大きい数を指定すると、Vimは何もしません。途中まで置き換えて止まる、という中途半端な結果にはならないので、数を数え間違えても壊れる心配はありません。
置換モードの Backspace は元に戻す
R で入る置換モードでは、Backspace が「1文字削除」ではなく「上書きした文字を元に戻す」という意味になります。打ち過ぎたぶんを戻せば、上書きされていた元の文字がそのまま復活します。
この挙動は置換モードの中だけのもので、通常の挿入モードでは Backspace は普通に文字を消します。同じキーの意味がモードで変わる例の1つです。
このレッスンで扱うキー
| キー | 動き |
|---|---|
| r | 1文字を置き換える |
| s | 1文字消して入力する |
| S | 行を空にして入力する |
| R | 上書きしていく |