〜「実践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のドキュメントではドットコマンドについてシンプルに「直前の変更を繰り返す」と書かれている。
(中略)最初に問うべきはこれだ。「変更ってなに?」
[Vim documentation: repeat]
(http://vim-jp.org/vimdoc-ja/repeat.html)
- 変更とは?
- ノーマルモードでのテキストを変更するコマンド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回のキー入力、変更にはドットコマンドを使用!