[vim][web+db] Vi(m) コマンドの覚書

WEB+DB PRESS 62」の特集「Linux の基礎知識」を読んで、
ボールペンでチェックしておいた覚えておきたいことをブログにも書いておく。

覚えておきたいコマンドの一覧

コマンド 解説
ZZ 保存して終了
w 次の単語に移動
b 前の単語に移動
^ 行頭に移動
$ 行末に移動
Ctrl+f 1ページ進む
Ctrl+b 1ページ戻る
gg ファイルの先頭に移動(1G でもいい?)
% 対応する括弧に移動
p 前の検索結果に移動(N でもいい?)
o 1つ下に新しい行を追加してテキスト入力(o は何の略?Over?)
O 1つ上に新しい行を追加してテキスト入力
dw カーソル位置から1単語削除
(似たようなコマンドとして d^ や d$ がある。d はきっと Delete の略だな。)
cw カーソル位置から1単語変更
(c は Change だな。)
yw カーソル位置から1単語コピー
(y は Yank で Emacs といっしょ。現在行を丸々コピーするには yy。)
p コピーしたのが行単位でない場合は、カーソル位置の1つ後ろにペースト。
コピーしたのが行単位の場合は、カーソル行の下にペースト。
P コピーしたのが行単位でない場合は、カーソル位置にペースト。
コピーしたのが行単位の場合は、カーソル行の上にペースト。

dw, cw, yw は似たもの同士

cw, yw も dw 同様に後ろの w を ^ や $ に変えると挙動が変わる。みんな似たような動作をする。

ペースト(p, P)の違い

  • コピーしたのが行単位の場合は、p, P は a, i に対応している。
  • コピーしたのが行単位の場合は、p, P は o, O に対応している。

そういえば、a は After の頭文字なんだろうか?
i が Insert だからカーソル位置に挿入で、a が After だから後ろに挿入と考えると覚えやすいな。

文字の置換

文字列の置換は s コマンドで行う。
フォーマットは「:範囲s/from/to/[gc]」
「範囲」は全行を表す % か、n 行目から m 行目を表す n,m が使える。
オプション c は confirm の略で、置換を1つ1つ確認したいときに使う。

アンドゥ

純粋な vi ではアンドゥは1回しか実行できませんが、Vim では複数回アンドゥを実行できるようになっています。

vi で複数回アンドゥしたいときはどうしたらいいんだろう?
回数を指定して u を呼んだりはできないのだろうか。