実践キーボードマクロ
>、|、|、(Enter)、|、|、<、(行頭に移動)の入力行うキーボードマクロを定義して再利用可能なように保存してみる(はてなの整形済みテキストブロックの入力支援ね)。以下、手順。
- C-x(
- マクロに相当する編集を実行。ここでは、>、|、|、(Enter)、|、|、<、(Ctrl-a)を入力する。
- C-x)
- M-x name-last-kbd-macro(Enter)
- Name for last kbd macro: hatena-insert-code-block(Enter)
- M-x insert-kbd-macro
- Insert kbd macro (name): hatena-insert-code-block(Enter)
- 上で挿入された内容を.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がかなモードになっているときに、「-」を入力しようとして「ー」が入力されて困る(モードによらず「-」が入力される動作を意図しているとして)。やっぱりキーボードマクロは使い捨て目的と割切って使う方がいいのかもしれず。しかし、前述の問題って回避策あるのかしら。