いわゆるキーマクロ機能を名前を付けてコレクションして管理するunite-source作りました

(※この文章はバージョン0.1.0です。後に加筆修正される可能性があります。)


Vimにはq{0-9a-zA-Z"}で開始して再びqを押すと終了し、@{0-9a-z".*=}で再生するRecordingという機能があります。

これは連番の入力や複数行の整形などを行う時などに役立ちます。
Vimエディタ マクロの話


しかしながらregisterを利用し、その保存はアルファベット一文字で行われるため、非直感的で再利用が難しいのが現状でした。


unite-recording(LeafCage/unite-recording) は、今までその場限りで使い捨てされるだけだったRecording機能をよりユーザーエクスペリエンサブルに活用できるインターフェイスを提供します。
これはRecordingに名前を付けて保存、必要な時に呼び出してセットすることを可能にします。

生け贄を捧げる

まずはunite-recordingに捧げるレジスタを決定しなければいけません。
unite-recordingは名前付きレジスタを一つ、Recording専用レジスタとして利用します。
本当は頑張ればそんなことしなくても済む気がしますが(現在レジスタを待避させて処理終了後に元のレジスタをセットし直す構造にしたら)、
なんか面倒くさかったのと、もうすでにレジスタを一つ使うように作ってしまったので、このままでいこうと思います。

生け贄に捧げるレジスタはg:unite_source_recording_charで決めます。デフォルトではzが使われます。
以下ではzを利用すると仮定して話を進めます。


Recordingを開始する

unite-recordingに記録するためのRecordingを開始します。
これには以下の方法があります。

  • コマンドラインで:Unite recordingを実行し、一番下の[:Add recording:]を選択する
  • コマンドラインで:UniteRecordingBeginを実行する

するとRecording名を求められるので、覚えやすい名前を付けます。
名前を入力し終わったらいよいよRecordingモードに入ります。ここで打ったバインドがそのまま記録されます。
しかしもし間違って打っても、後から修正できるので力むことなく、覚えさせたい操作をしてください。

記録し終わったらqでRecordingを終了します。

注意:Recordingが終了してから実際にunite-recordingにRecordingが登録されるまで若干ラグがあります。
登録した内容が反映されていなければカーソルを少し動かしてからもう一度呼び出してみてください。


過去に登録したRecordingを使う

今し方登録したRecordingは@zで使うことが出来ますが、過去のRecordingを使いたくなったなら

:Unite recording

で呼び出し、選択すると、Recording用のレジスタ(z)にそのRecordingが登録されます。
次に@zでそのRecordingを再生できます。
Recordingは一度再生したら、次からは@@で最後のRecoringを利用することが出来ます。


登録したRecordingを修正する

:Unite recordingから修正したいRecordingにカーソルを合わせて、<Tab>を押します。
action一覧が表示されますので、その中からrevise_recordingを選択します。
すると専用バッファに登録されているRecordingが書き出されるので修正して:writeすると修正が反映されます。

注意:特殊文字の入力に気をつけてください。例えば<C-n>を表す^Nはインサートモードで<C-v>を押した後、<C-n>を押すことで入力できます。
また、ファンクションキー<F1>~<F12>の入力やカーソルキー、<BS>キーの入力は(たぶん)不可能だと思います。


登録したRecordingを削除する

:Unite recordingを実行した後、削除したいRecordingの上でdを押します。
(または<Tab>→actionから"delete"を選択します)


その他の操作

README.mdを見てください。
ヘルプファイルはまだ作っていません。余力があったらそのうち。
何かしらのバグが存在するはずだと思うので、Twitter(@)かGitHubのissueかLingrか、またはこのブログのコメントなどで教えてください。