vi は a から z の名前付きレジスタを持っていて、ユーザは自由にそれを使うことができる。
vim はこれを拡張し、A から Z までのレジスタの指定も許す。これは新しいレジスタが 26 個増えるわけではなく、[a-z] レジスタに対する特別な別名として振る舞う。たとえばレジスタ A を指定してヤンクした場合、それは a レジスタがもともと持っていた内容への追記を表す。これは有用な機能なので、wasavi でもそういうふうに動作する。
では、A から Z までのレジスタを指定しつつ、それを読み出す動作を行わせた場合どうなるんでしたっけ?
とりあえず、vim では読み出しの場合は A レジスタは単に a レジスタの内容を返すようである。書き込み時のような特別扱いはない。しかしこの透過性って必要なんだろうか? 読み出し時にも特別扱いしていいのではないか。
というわけで、wasavi では、[A-Z] レジスタからの読み出しにおいては、以下のように振る舞うようにした。
- B レジスタ: ブラウザのユーザーエージェント文字列を返す
- D レジスタ: 現在の日付時刻の文字列を返す
- T レジスタ: wasavi が属するページのタイトルを返す
- U レジスタ: wasavi が属するページの URL を返す
- W レジスタ: wasavi のバージョン文字列を返す
これ以外の [A-Z] レジスタは、単に空文字列を返す。