centimacro 20140306.627(in MELPA)
Assign multiple macros as global key bindings

概要

キーボードマクロ 使っていますか?

同じ操作を繰り返すときには絶大な威力を発揮するので、
一日に何十回も使っている人もいるほどです。

キーボードマクロは1つしか定義できないと誤解されがちですが、
実は複数個登録できますし、コマンド化だってできます。

実際は複数個のキーボードマクロを回す
キーボードマクロリング 」が
キルリングのように用意されています。

しかし C-x C-k プレフィクスキーで回す必要があり面倒です。

正直、僕には使いこなせません。

そこで centimacro.el は、任意のキーボードマクロを
一時的にキーに割り当てるというアプローチを採用しました。

一言で言えばキーボードマクロのレジスタです。

M-f3 を押すとマクロを割り当てるキーを訊いてくるので、
空いている適当なキーを指定し、
その後は普通にキーボードマクロを定義してください。

キーボードマクロ終了は割り当てたキーかf4です。

centimacroのすごいところは、centimacro呼び出し中に
別のcentimacroを呼び出せるところです。

ちょっとした テンプレート のような
レジスタ のような使い方があります。

  1. <M-f3><f6>foo<f6> → <f6> で "foo" が挿入される
  2. <M-f3><f7><f6>bar<f7> → <f7> で "foobar" が挿入される
  3. <M-f3><f8><f6>-<f7>-<f6><f8> → <f8> で "foo-foobar-foo" が挿入される
  4. <M-f3><f6>omg<f6> → <f6> で "omg" が挿入される
  5. <f7> で "omgbar" が挿入される
  6. <f8> で "omgbar-omg-omg" が挿入される

1と2でそれぞれf6とf7にcentimacroを定義します。

3は先程定義したばかりのcentimacroを呼び出すcentimacroです。

4でcentimacroを別な文字列挿入に再定義し、
5と6で再定義されたcentimacroを反映します。

このように、進化したレジスタとして一時的に
入力する文字列を記憶できますし、
それだけではなく任意の操作を必要なときに繰り返せます。

キーボードマクロ自体超強力な機能ですし、
自然な形で複数個のキーボードマクロが使えるというのは、
とんでもなく大きな可能性を秘めているでしょう。

あえてf5〜f8に何もコマンドを割り当てないで空けておいてもいいし、
M-数字も絶好のcentimacroポジションです。

キーボードマクロ愛用者は自然な形でなじめるはずです。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてcentimacroを使う方は
以下のコマンドを実行します。

M-x package-install centimacro

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name centimacro

設定 150331055143.centimacro.el(以下のコードと同一)

;;; centi-assignを割り当てるキー
(setq centi-assign-key (kbd "<M-f3>"))
(require 'centimacro)
(global-set-key (kbd "<C-M-f3>") 'centi-restore-all)
(defadvice centi-restore-all (after message activate)
  (message "Centimacro restored"))

実行方法

$ wget http://rubikitch.com/f/150331055143.centimacro.el
$ emacs -Q -f package-initialize -l 150331055143.centimacro.el


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。