ace-jump-mode は簡単にいうととても短いキーストロークで目的の単語や文字まで移動できるという拡張.

便利そうだったので設定してみたのだけれど,かなり手間取ってしまったので備忘録としてメモ.
こちらのblogの設定を真似したかった.

Hyperキーの設定

これが一番面倒だった.
一般的には使わなくなった CapsLockあたりを設定するようなのだけれど,愛用しているHHKBには CapsLockがない.
右Optionを割り当てたかったのだけれど,MacのTerminalは右か左かなんていう区別はしてくれないらしい.
iTerm2 を使うことでそのあたりの設定は細かくできるらしいのだけれど,Visor風の設定が自分の好みな感じはちょっと違っていて TotalTerminal を使い続けたかったので,OSレベルで違うキーとして割り当てるということにした.
使ったのは Seil というソフト.

Change Option_R をF8に割り当てる.

seil.png

本当はF19やF20あたりを割り当てたかったのだけれど,MacのTerminalでは認識できないようであった.

Emacsの設定

F8 をHyperキーとして割り当てる設定として下記を追加.

(define-key function-key-map (kbd "<f8>") 'event-apply-hyper-modifier)

ace-jump-modeの設定は参考にさせていただいたblogに記載の通り.

(require 'ace-jump-mode)

(defun add-keys-to-ace-jump-mode (prefix c &optional mode)
  (define-key global-map
    (read-kbd-macro (concat prefix (string c)))
    `(lambda ()
       (interactive)
       (funcall (if (eq ',mode 'word)
                    #'ace-jump-word-mode
                  #'ace-jump-char-mode) ,c))))

(loop for c from ?0 to ?9 do (add-keys-to-ace-jump-mode "H-" c))
(loop for c from ?a to ?z do (add-keys-to-ace-jump-mode "H-" c))
(loop for c from ?0 to ?9 do (add-keys-to-ace-jump-mode "H-M-" c 'word))
(loop for c from ?a to ?z do (add-keys-to-ace-jump-mode "H-M-" c 'word))