= 矩形選択して,連番を挿入するの作った
[2010-09-01 04:10:05]
>>>[emacs]
結局,replace-regexpは使わずに,cua-modeのcua-sequence-rectangleとstring-rectangle(C-x r t)を参考にして作っちゃいました.
使い方
- こんなふうにリージョンを選択する(矩形のつもり)
- C-x r N(my-sequence-rectangle)で連番の初期値を聞いてくるので4と答える
- 次はインクリメントする数の指定.デフォルトだと1ずつ増える
- フォーマットの指定.%dが入ってたらいい
- そうするとこんな感じで連番を入れてくれる
導入
- gistからもってくる
(install-elisp-from-gist "559592")
- init.elなどに書く
(require 'my-sequence-rectangle) (define-key ctl-x-map "rN" 'my-sequence-rectangle)
あぁぁ...
名前かぶってないか探したらまったく同じことしてるのがあった...発想まで同じ
http://academic.meganebu.com/~debug_ito/index.php?Ubuntu%2F.emacsこれの最後にありまする.
コード
;;;; my-sequence-rectangle.el --- Insert Sequence Rectangle ;; Author: Kentaro Shimatani <kentarou.shimatani@gmail.com> ;; Created: 1 Sep 2010 ;; Keywords: rectangle, sequence ;;; Code: (defvar my-rectangle-seq-format "%d") (defun my-sequence-rectangle (start end first incr format) "Resequence each line of rectangle starting from FIRST. The numbers are formatted according to the FORMAT string. Called from a program, takes five args; START, END, FIRST, INCR and FORMAT." (interactive (progn (barf-if-buffer-read-only) (list (region-beginning) (region-end) (if current-prefix-arg (prefix-numeric-value current-prefix-arg) (string-to-number (read-string "Start value: (0) " nil nil "0"))) (string-to-number (read-string "Increment: (1) " nil nil "1")) (read-string (concat "Format: (" my-rectangle-seq-format ") "))))) (if (= (length format) 0) (setq format my-rectangle-seq-format) (setq my-rectangle-seq-format format)) (apply-on-rectangle 'my-string-rectangle-line start end '(lambda () (insert (format format first)) (setq first (+ first incr))))) (defun my-string-rectangle-line (startcol endcol func) (move-to-column startcol t) (funcall func)) (provide 'my-sequence-rectangle)