概要
Emacsで数字をインクリメントしたくてぐぐったんだけれど、自分で関数定義してるのばっかりだった。で、そんなことしなくてももっと簡単にできるやり方を見つけたのでエントリ化する。
cua-mode と cua-incr-rectangle
cua-mode
って知ってますか?emacsの矩形選択モードです。昔は拡張だったんですが今は本家に取り込まれています。
このcuaのパッケージに、cua-incr-rectangle
って関数があります。これです。これを使えば数字をインクリメント出来ます。
やりかた
順番的には
-
M-x cua-mode
する -
M-x cua-set-rectangle-mark
を実行してインクリメントしたい数字を選択する -
M-x cua-incr-rectangle
を実行する - 選択モードを終了する
という流れだけど、毎回M-x cua-mode
をオンにするとか、選択開始するたびM-x cua-set-rectangle-mark
って入力するとかやってられないので、init.elに書いちゃいましょう
(cua-mode t)
(define-key global-map (kbd "C-RET") 'cua-set-rectangle-mark)
これで常にcua-mode
がオン、Control+Returnで選択開始出来ます(このキーは各自でお好みなキーバインドにして下さい。)
また、cuaの選択モードに限ってM-i
がcua-incr-rectangle
にバインドされてます。
というところまでを前提にすると、やり方は
-
C-RET
押して数字を選択する -
M-i
押す -
C-g
押す
終わり。便利!
デクリメント
インクリメントがあったらデクリメントもあるだろう、と思ったんですがないようです。
ぐぐったら実装してる方がいたので丸パクリ参考にさせてもらって、init.elに以下の記述を行うとデクリメントを行う関数cua-decr-rectangle
がM-I
で使える
(defun cua-decr-rectangle (decriment)
"Decrement each line of CUA rectangle by prefix amount."
(interactive "p")
(cua-incr-rectangle (- decriment)))
(define-key cua--rectangle-keymap (kbd "M-I") 'cua-decr-rectangle)
補足
- cua-modeは矩形じゃない普通の選択モードと違って、カーソルの位置の文字は選択範囲に 含まれます
- 10増やす、とかしたかったら、数字を選択した状態で
C-u 10 M-i
とかするといける。