LoginSignup
15
13

More than 3 years have passed since last update.

Emacsで数字をインクリメントする(ついでにデクリメントも)

Last updated at Posted at 2013-11-05

概要

Emacsで数字をインクリメントしたくてぐぐったんだけれど、自分で関数定義してるのばっかりだった。で、そんなことしなくてももっと簡単にできるやり方を見つけたのでエントリ化する。

cua-mode と cua-incr-rectangle

cua-modeって知ってますか?emacsの矩形選択モードです。昔は拡張だったんですが今は本家に取り込まれています。
このcuaのパッケージに、cua-incr-rectangleって関数があります。これです。これを使えば数字をインクリメント出来ます。

やりかた

順番的には

  1. M-x cua-mode する
  2. M-x cua-set-rectangle-mark を実行してインクリメントしたい数字を選択する
  3. M-x cua-incr-rectangle を実行する
  4. 選択モードを終了する

という流れだけど、毎回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-icua-incr-rectangleにバインドされてます。
というところまでを前提にすると、やり方は

  1. C-RET押して数字を選択する
  2. M-i押す
  3. C-g押す

終わり。便利!

デクリメント

インクリメントがあったらデクリメントもあるだろう、と思ったんですがないようです。
ぐぐったら実装してる方がいたので丸パクリ参考にさせてもらって、init.elに以下の記述を行うとデクリメントを行う関数cua-decr-rectangleM-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とかするといける。
15
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
13