概要
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とかするといける。