とりあえず簡単に使用例を紹介します. 実際にJVimで同じように操作してみて下さい
これで「挿入モードにしてから "abc"と文字を打ってコマンドモードに戻る」という
一連の操作全体を記録したことになるのです
この操作を再生するには @a と打つだけです. さきほどの操作と全く同じ結果が
一瞬にして得られます. 実際には qa と打ってから q を打つまでの間は
JVimのたいていの操作をすることが出来て, 記録してから何度でも同じ操作を繰り返す
ことができるのです
複雑な操作を何度も繰り返したい時には,この機能を使えば
最初の一回だけちゃんと操作をして記録するだけで, 後は複雑な操作を何度も
瞬間的に間違いなく繰り返すことができるので死ぬほど便利です. ぜひ覚えましょう
操作の記録を開始する時は
q(バッファの名前)
と打ちます. (バッファの名前)というのは 名前つきバッファ のことなので
アルファベットの小文字 "a"から"z"までの 26文字の一文字の名前を指定します
記録した内容を覚えておく変数のようなものだと思って下さい. つまり
と打てば,「"a"という名前の変数に記録内容を入れておく」わけです. だから
qg
なら "g"という名前の場所に操作内容を記録するわけだし 自由に好きな名前を
使って結構です. qz でも qu でも何でも
良いわけです. いろんな操作をそれぞれ違う変数に入れておいてそれぞれ使いたい所で使えます
そして記録を開始してから再びコマンドモードで q を押すまでの操作内容が
指定した変数の中に記録されます
再生(記録内容の実行)は簡単です
という操作だけで 指定した名前つきバッファの内容を実行します
たとえば a という名前で記録しておいたものならば @a で
再生します
同じバッファの再生を何度も繰り返したい場合は最初に繰り返し数を指定して
と打てば 5回繰り返します. また,
@@
とすると直前に @ コマンドで使ったものと同じバッファと解釈して実行します
記録した操作の入っている「変数のようなもの」とは, 実は単なる 名前つきバッファ の
ことなので, put(書き出し)してみれば どのような文字列が入っているのかを
見ることができます. (「名前つきバッファ」についての詳細は, 別文章で解説してます.)
試しに 何か操作を記録してから その内容を書き出してみて下さい. 例えば a と
いう名前で記録したのであれば "ap または :pu a などの
コマンドで 名前つきバッファ"a"の中身をputしますから 中身を確認できます
このようにして書き出された文字列は そのまま設定ファイルなどでおなじみの map コマンド
用の文字列として使えます. 実際に操作しながら作られた文字列なので 確実にうまく動く
map文字列が簡単に作成できる というわけです
また,単なる名前つきバッファの内容なので 別に q コマンドを使って記録しなければ いけないわけでもありません. 例えば
aabc^[
というような行(実際は最後の ^[ という文字は「本物の」Escape文字を書く)を
書いてから "fyy のような操作で名前 f に行の内容を記録しても
@f などと打てば, ちゃんと動作します
また, map コマンドで使った文字列を名前つきバッファに入れてこれを @ コマンドで
動作確認することもできるというわけです
何かの操作を記録したけど 何という名前で記録したのかを忘れてしまったら
:dis
というコマンドで現在使用中のすべての名前つきバッファや履歴バッファの内容を
一覧表示できます. これを見れば記録した名前と中身の対応が見えるので すぐに
分かると思います
のように 通常は小文字のアルファベットを名前として使うはずの所を 大文字 にして
記録し始めると,操作内容の 追加 として記録されます
「現在記録されている操作内容を少しだけ変更して,似たような別の場所で使いたい」とか
「ちょっと間違った操作で記録されているので修正したい」場合もあるかと思います
操作内容は単なる名前つきバッファの内容なので 一度記録した名前つきバッファの
内容を putで書き出してから この内容を通常の文字列として書き換え修正してから
再び,名前指定の yankや削除操作をすればバッファに書き戻して使えます
(でも,短いものなら記録し直したほうが早いかも.)
操作内容は名前つきバッファに入るということは 操作内容を記録したい名前のバッファ
は 操作中には使えないということです
また, JVimを終了させてしまうと,当然 名前つきバッファの内容も消えてしまいます
記録した操作を複数のファイルに対して使いたい場合は いったんJVimを終了させたり
せずに,複数のファイルを読み込んで使えば良いのです. 名前つきバッファの内容は
ファイルごとに持っているのでは無くて,編集対象を切り替えても共通の内容なので
複数のファイルに対して同じ操作ができます
今後もずっと何度もよく使いたいのであれば 記録した内容は設定ファイルに
map コマンドとして書いておくのが良いでしょう