〜「実践Vim 思考のスピードで編集しよう!」を読んでVimの基本をまとめ中〜
0. Vimのやり方
普段コードを書く中では、同じ編集を繰り返すシーンが多い。この繰り返しの編集を、Vimでは効率的に実現してくれる。Vimの操作を身につけるためのファーストステップは「ドットの公式 Dot Formula」による繰り返し編集をマスターすること。
0-1. Vim以前の大前提
DRY(Don't Repeat Yourself)
- Vimに限らず言わずもがな。
0-2. ドットの公式 Dot Formula(キー入力の理想型)
カーソル移動用のキー入力が1つ、何かを実行するキー入力がもう一つ。何かをするにはこれが一番だ!
- 繰り返しの変更にはドットコマンド
.
を使用する - 合計2つ(移動に1回+テキスト変更に1回)のキー入力が理想系(移動と変更を含めて記憶したい場合はマクロ使う)
0-3. ドットコマンドとは?
Vimのドキュメントではドットコマンドについてシンプルに「直前の変更を繰り返す」と書かれている。
(中略)最初に問うべきはこれだ。「変更ってなに?」
- 変更とは?
- ノーマルモードでのテキストを変更するコマンド1つ分
- 挿入モードに入ってからノーマルモードに戻るまでのテキスト変更
0-4. 余計な移動をなくす
ドットコマンドを効率的に使うために、移動用のキー入力を最小限に抑える。(理想は1回のキー入力で目的の箇所に移動する)着目すべきは下記の2点。
- ノーマルモードでの検索による移動
目的の編集箇所に移動するためにh
,j
,k
,l
を連打するのはかっこわるい。下記の検索コマンドを利用して少ないキー入力で移動する。
検索コマンド | 内容 | 次検索 | 前検索 | 最小キー入力数 |
---|---|---|---|---|
f {検索文字} | 一番近い{検索文字}まで移動(前方検索) | ; | , | 2 |
F {検索文字} | 一番近い{検索文字}まで移動(後方検索) | ; | , | 2 |
/ {検索文字列}<CR> | 一番近い{検索文字列}まで移動(前方検索) | n | N | 3 |
? {検索文字列}<CR> | 一番近い{検索文字列}まで移動(後方検索) | n | N | 3 |
* | 現在のカーソル下の単語を検索 | n | N | 1 |
- 挿入モードへ入る方法
挿入モードに入るために、移動用のキーを押してからi
またはa
を押すと、それだけで2回以上のキー入力になってしまう。Vimの複合コマンドを利用することで1回のキー入力でカーソルを移動させてかつ挿入モードに入ることができる。
Vimの1キーコマンドには、2つ以上の他のコマンドを纏めたバージョンと考えられるものがたくさんある。以下の表に、例をいくつか掲載する。
複合コマンド 同じことをする長いコマンド 内容(※引用外) C
c$
カーソルから末尾までを削除して挿入モードに入る s
cl
カーソル下の文字を削除して挿入モードに入る S
^C
カーソル行を削除して挿入モードに入る I
^i
カーソル行の先頭に移動して挿入モードに入る A
$a
カーソル行の末尾に移動して挿入モードに入る o
A<CR>
カーソル行を下に改行して挿入モードに入る O
ko
カーソル行を上に改行して挿入モードに入る
0-5. まとめ
まずはドットの公式を徹底する。移動に1回のキー入力、変更にはドットコマンドを使用!