somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Emacs】同じキーを連続して入力したときの動作を変更する

同じキーを連続して入力したときの動作を変更します。たとえば、左括弧を入力したときの次の行動は、ほぼ右括弧を入力します。この動作を省略するためのelispがあったので導入しました。

インストールと設定

下記設定を加え、コメントのインストール部分を評価してインストールします。

;; 同じキーを連続して入力したときの動作を変更する
;; https://github.com/imakado/emacs-smartchr
;; (install-elisp "https://github.com/imakado/emacs-smartchr/raw/master/smartchr.el")
(require 'smartchr)

グローバルにキーバインドしてもいいですが、各モードによって用途が違うので、下記のように設定を加えます。

(defun my-smartchr-commom-setting ()
  (local-set-key (kbd "(")  (smartchr '("(`!!')" "(")))
  (local-set-key (kbd "「")  (smartchr '("「`!!'」" "「")))
)

(add-hook 'php-mode-hook 'my-smartchr-common-setting)

hookするモードが決まっているならば、下記でもいいと思います。今回は共通の設定なので使っていません

define-key xxx-mode-map

今回、半角丸括弧と全角鍵括弧を設定してあります。キーを押下するごとに、入力される内容がリストの最初の要素から順に変更されます。!!はカーソル位置を示していますので、括弧内にカーソルが来るため入力しやすくなっています。

また、二つ目の全角鍵括弧の設定は、MS-IMEで入力したときに効果を発揮しました。SKKでは入力されませんでしたので、IMのモードによります。

その他

smartchr以外にも、skeltonやkey-comboなどがあるようなのでしばらく使ってみてから不満があれば移行するかもしれません。

参考