Emacs

multiple-cursorの連番挿入機能の拡張

More than 5 years have passed since last update.

multiple-cursor.el(ver1.2.1)で連番を挿入できる関数mc/insert-numbersは、連番の開始番号しか選択できません。

cua-modeのように問い合わせで増加数や0埋めを指定したかったので走り書きしました。

設定をコピペして反映させ、multiple-cursor使用時に

M-x my/mc/insert-numbersを呼び出せば以下のプロンプトが表示されます。


  • Start from (default 0): 開始番号

  • Increment by (default 1): 増加数

  • Padding (default %01d): 0埋め、空白埋めなどのフォーマット(%03d, %5d)



.emacs.d/init.el

    ;; insert specific serial number

(defvar my/mc/insert-numbers-hist nil)
(defvar my/mc/insert-numbers-inc 1)
(defvar my/mc/insert-numbers-pad "%01d")

(defun my/mc/insert-numbers (start inc pad)
"Insert increasing numbers for each cursor specifically."
(interactive
(list (read-number "Start from: " 0)
(read-number "Increment by: " 1)
(read-string "Padding (%01d): " nil my/mc/insert-numbers-hist "%01d")))
(setq mc--insert-numbers-number start)
(setq my/mc/insert-numbers-inc inc)
(setq my/mc/insert-numbers-pad pad)
(mc/for-each-cursor-ordered
(mc/execute-command-for-fake-cursor
'my/mc--insert-number-and-increase
cursor)))

(defun my/mc--insert-number-and-increase ()
(interactive)
(insert (format my/mc/insert-numbers-pad mc--insert-numbers-number))
(setq mc--insert-numbers-number (+ mc--insert-numbers-number my/mc/insert-numbers-inc)))