はじめに
Vimは敷居の高いエディタで、習得に時間がかかります。
しかし、一度習得してしまえば編集効率・速度は劇的にアップします。
数年前に購入した書籍に「実践Vim」があります。
Vimレベルアップの大きな手助けとなりました。
ここでは一通り読んで、得られた考えをまとめています。
長いので何度かに分けます。また、全てはやりません。
各TIPのまとめ
第1章 Vimのやり方
TIP1: ドットコマンドとは
→.はマイクロマクロ
.は「最後に行った変更(テキストに変更を及ぼすコマンド1単位)を繰り返す」コマンドです。
例えば、
- 現在行から3行削除(3dd)
- 現在行を「-----」に変更(cc-----[esc])
- 1単語を消去(dw)
- 「=」の前まで削除(dt=)
- 行末に「 // TODO」を追記(A TODO[esc])
「最後に行った変更」は処理として記録されていて、つまりは短いマクロと考えられます。
「最後に行った変更」の内容によってはマクロの再実行がやりにくくなるのです。
繰り返しやすいようにキーストロークを工夫することが効率アップにつながります。
TIP2: DRY(Don't Repeat Yourself)
→.を使いやすいコマンドを考える
vimは移動のコマンドが多数存在します。
さらには複合コマンドも存在します。
例えばAを押すと行末にカーソルを移動して挿入モードに入りますし、
ccを押すと現在行を削除してから挿入モードに入ります。
どのコマンドを使えば.が使いやすくなるかを考えることが効率アップにつながります。
TIP3: 一歩下がって、三歩進む
→.を使いやすいコマンドを考える
TIP2と同じです。
例では「+」をsで消した上で「 + 」を入力しています。
.を使いやすくするための一例です。
TIP4: 実行して、繰り返して、元に戻す
→ もとにもどるコマンドを覚えて繰り返し過ぎたときに
巻き戻しを覚えることで大胆なカーソル移動や編集が実現できます。
不要なところで.を押してしまったときに、uで元に戻れます。
移動系のコマンドでも同様です。
単語単位の移動で、wを連打して進みすぎたときにbで戻れますし、
nの場合はNが反対方向への移動になります。
TIP5: 手作業での検索と置換
→*で入力せずにカーソルにある単語を検索。nと.の組み合わせ。
nと.の組み合わせは私がVimを使った編集で効率を初めて実感できた内容です。
vimには置換用のコマンド(:s)もあります。一方で特定のフレーズだけを置き換えたいときなど、nで検索し、カーソルを当てた単語を.で置き換えるということもよくやります。
一番最初にcwで単語を置き換えると後は.で繰り返せるわけです。
TIP6: ドットの公式
→理想は移動に1キーストローク、編集に1ストローク
特に移動のキーストローク数をいかに減らすか、ですね。
第2章 ノーマルモード
TIP7: 埃を払って一息つこう
→ ノーマルモードは、構想を練るためのもの
TIP8: アンドゥはひとまとめに
→ アンドゥの単位を考えて意図的に挿入モードを抜ける
vimのアンドゥは「1つの変更」単位です。
挿入モードに入ってテキストを編集、抜けるまでの操作も1つの単位となります。
ということはどこで挿入モードを抜けるかを考えることでアンドゥの単位をコントロールできます。
TIP9: 変更を繰り返し可能なものにする
→.を使いやすいコマンドを考える。
TIP2と同じです。
TIP10: 回数指定を使って簡単な計算を行う
→ctrl-X, ctrl-Aは(カーソルに数字がなくても)直近の数字の計算を行う。
TIP11: 繰り返しで済むなら、回数を指定しない
→回数指定より繰り返しの方が便利なことも
2dwは単語2つ分を削除しますが、数えるのが面倒な場合、dwで1単語を消してから.で繰り返す方が楽なこともあります。
TIP12: 統合して統治せよ
→vimの操作はオペレータとモーションの組み合わせ
これに気付くと、コマンドの習得が速くなります。
まずはオペレータとなるキーを押してからモーションとなるキーを押すことで
vimの編集は成り立っています。
例えばdGは、d(削除のオペレータ)とG(最終行までのモーション)と分解して考えます。