emacs如何快速的产生一个数字序列?

类似excel那样鼠标右键拉序列的方式

你是说emacs-lisp?

(number-sequence 0 9)
;=> (0 1 2 3 4 5 6 7 8 9)

打印的话我之前在一个博客上看到了这种包,但是名字忘了……找半天也没找到

我想问的是类似excel那样鼠标右键拉序列的方式

找到啦,

谢谢…

关于规律性代码的输入技巧 #9 楼 开始往下看。

这个是我想要的

先选中需要填充序列的区域,然后

通过 C-u C-x r N 调用 rectangle-number-lines 会询问起始值和格式,默认格式是 "%Nd ",尾巴带空格。可以现场改,也可以修改 rectangle–default-line-number-format 函数一劳永逸。

把解决方案给自己 不厚道吧

我觉得 这个更有用

哈哈....

解决方案在另一个帖子里,所以我用的是引用...

你怎么像excel里 拉第二列呢?

比如 我想让第二列 等于 第一列的2倍

所以 你的问题没有解决

等一个在 Emacs 里使用 Excel 的插件,名字我都想好了,就叫 Emaxcel :sunglasses:

Why not excemacs(

Emaxcel 更顺口一点 :smirk:

Excaliburemas

2 个赞

不知道是不是你要的...

C-u-C-x--r-N

2 个赞

eval-print-last-sexp?

1 个赞

这就不是单纯的生成序列了,涉及到计算/公式。通常这第二列也不会只生成一次就不变了,还需要随着第一列的改变自动更新。这么复杂的情况,何不用 org-spreadsheet ?

| Student  | Maths | Physics | Mean |
|----------+-------+---------+------|
| Bertrand |    13 |      09 |      |
| Henri    |    15 |      14 |      |
| Arnold   |    17 |      13 |      |
#+TBLFM: $4=vmean($2..$3)

光标放在公式上,按 C-c C-c 得到:

| Student  | Maths | Physics | Mean |
|----------+-------+---------+------|
| Bertrand |    13 |      09 |   11 |
| Henri    |    15 |      14 | 14.5 |
| Arnold   |    17 |      13 |   15 |
#+TBLFM: $4=vmean($2..$3)

参考 Org as a spreadsheet system: a short introduction

3 个赞

我觉得他可以和tiny结合起来的

可以了

;; test
;; m4,8*2x|*** TODO http://emacsrocks.com/e%02d.html
;; 67


(defun left-number ()
  (save-excursion
    (goto-char (line-end-position))
    (while (looking-back "\s") (left-char 1))
    (sexp-at-point)))

(defvar tiny-mapconcat-1 nil "")

(defun tiny-mapconcat-1 ()
  ""
  (let ((parsed (tiny-mapconcat-parse)))
    (if  parsed
        (setq tiny-mapconcat-1
              (let* ((expr (or (nth 3 parsed) "x"))
                     (lexpr (read expr))
                     (n-have (if (and (listp lexpr) (eq (car lexpr) 'list))
                                 (1- (length lexpr))
                               0))
                     (expr (if (zerop n-have) `(list ,lexpr) lexpr))
                     (n-have (if (zerop n-have) 1 n-have))
                     (tes (tiny-extract-sexps (or (nth 4 parsed) " %s")))
                     (fmt (car tes))
                     (idx -1)
                     )
                `(let* ((x (left-number))(lst ,expr))
                   (format ,(tiny--strip-\n fmt)
                           ,@(mapcar (lambda (x)
                                       (if x
                                           (read x)
                                         (if (>= (1+ idx) n-have)
                                             'x
                                           `(nth ,(incf idx) lst))))
                                     (cdr tes))))))
      (when tiny-mapconcat-1
        (insert (eval tiny-mapconcat-1)))
      )))

(defun tiny-expand1 ()
  (interactive)
  (tiny-mapconcat-1)
  (lie-move 1)
  (goto-char (line-end-position))
  )

图片

git-complete