こんにちは Vim部部員のtsunekawa です。
最近社内で発足したVim部の活動記録を残していこうと思います。
なぜVimを使うのか?
- 思考の速度で編集出来る
- 新入部員にはちょっと理解できない
- 楽しい
- もっと理解できない
まずはVimの楽しさを理解する所から始めます。
マクロを使いこなせると楽しい
マクロを使いこなすポイントはレジスタにあります。
レジスタについて簡単にふれていきます。
まずはレジスタの中身を確認してみましょう。
ノーマルモードで
:registers
と打つと現在のレジスタの中身が表示されます。
既に値が入っているレジスタが表示される場合がありますが、今回こちらは特に触れません。
今回主に使うのは"a-z", "A-Z" のレジスタです。
特定のレジスタに入っている値を見るには
:reg a
:reg ab
レジスタに値を入れるには
"a
と打ってから操作を行います
ダブルクォーテーションの後にレジスタ名です
"ayy
と打てば今居る行の内容がレジスタa
に保存されます。
レジスタについて簡単に説明したところでいよいよマクロに入ります。
マクロの使い方
ノーマルモードで
qa
これでレジスタa
に記録開始です。
次にq
と打つまでの動作が保存されます。
マクロ記録中にノーマルモードで
q
これで記録完了です
マクロ演習
レジスタについての説明を踏まえつつマクロを使ってみます。
先ず以下の式を書いたテキストファイルを用意して下さい。
1 + 2 =
2 + 3 =
3 + 4 =
5 + 6 =
この式を使ってvim で計算をしてみます。
以下の手順通りに入力してみてください。
- <esc>
- 1にカーソルがあっている状態でノーマルモードに
- qa
- マクロの記録開始
- "byl
- 1 をレジスタb に保存
- ww
- 2 まで移動
- "cyl
- 2 をレジスタc に保存
- $
- 末尾に移動
- i
- 入力モードに切り替え
- <Ctrl-r>=
- Ctrl を押した後に= を押すと計算モード?になります
- <Ctrl-r>b
- レジスタb の値を入力
- +<Ctrl-r>c
- で+演算子のあとにレジスタc の値を入力 (1+2 と表示されているはず)
- <esc>
- 入力モード終了 (= の後に3 と入力されたはず)
- 0j
- 先頭に戻って1行下に移動
- q
- 記録完了
- @a
- レジスタa 記録したマクロを実行
計算結果が入力されたでしょうか?
2@a
と打つと残りの結果も入力されるはずです。
最後の行に到達するとマクロの実行が止まるので 100@a としても必要以上にマクロが実行されることは無いそうです。
まとめ
以上で今回の活動は終了です。
今回の内容を応用するとこんなことができます。
次回予告
第二回活動内容(予定)
- テキストを編集するときの考え方
- vimのコマンド体系・覚え方
- オペレータとモーションについて