実践キーボードマクロ

>、|、|、(Enter)、|、|、<、(行頭に移動)の入力行うキーボードマクロを定義して再利用可能なように保存してみる(はてなの整形済みテキストブロックの入力支援ね)。以下、手順。

  1. C-x(
  2. マクロに相当する編集を実行。ここでは、>、|、|、(Enter)、|、|、<、(Ctrl-a)を入力する。
  3. C-x)
  4. M-x name-last-kbd-macro(Enter)
  5. Name for last kbd macro: hatena-insert-code-block(Enter)
  6. M-x insert-kbd-macro
  7. Insert kbd macro (name): hatena-insert-code-block(Enter)
  8. 上で挿入された内容を.emacsに追記。こんな感じ(ここではtext-modeのC-cbにマッピングしている)。
(define-key text-mode-map "\C-cb" 'hatena-insert-code-block)
(fset 'hatena-insert-code-block
   [?> ?| ?| return ?| ?| ?< ?\C-a])

うーん、手順が複雑な上に、できたマクロもあんまり保守性がよくないんだよなぁ(キー入力そのままだから)。これっくらいだったら、普通に

(define-key text-mode-map "\C-cb" 'hatena-insert-code-block)
(defun hatena-insert-code-block ()
  (interactive)
  (insert ">||\n||<")
  (beginning-of-line))

って具合で関数定義した方がいいYo。
キーボードマクロだと、例えばSKKがかなモードになっているときに、「-」を入力しようとして「ー」が入力されて困る(モードによらず「-」が入力される動作を意図しているとして)。やっぱりキーボードマクロは使い捨て目的と割切って使う方がいいのかもしれず。しかし、前述の問題って回避策あるのかしら。