新人の頃に「"」などの囲み文字は「""」というように最初に対の形で入力して、その後に中身を書いていくという癖を付けられました。まあ、囲み文字を閉じ忘れるのにはいいと思うのですが、如何せんカーソルを一度戻して入力を続けるというのが結構面倒なんですよね。
今はPHPで仕事をしてるんですけど、PHPなんで当然HTMLタグとかも書いたりしてると、囲み文字が結構あって、その都度カーソル戻って入力するのが、結構嫌だった。
そこでXYZZYで「""」や「<>」と入力すると勝手に1文字分カーソルが戻ってくれるようなマクロを作りました。
こちらがソースになります。
;;囲み文字を入力したら、カーソルを戻して囲み文字の間にカーソルが入るようにする (setq *backword-char-item-list* '((#\) "()") (#\] "[]") (#\} "{}") (#\' "\'\'") (#\" "\"\"") (#\> "<>"))) (defun backword-char-command-hook (list) (if (consp list) (let ((last-command (first (first list))) (back-key (first (rest (first list))))) (add-hook '*post-command-hook* #'(lambda() (if (and (eq *last-command-char* last-command) (looking-back back-key) ) (backward-char))) ) (backword-char-command-hook (rest list)) ) )) (backword-char-command-hook *backword-char-item-list*)つたないコードですが、誰かの参考になれば幸いです。