3

您将如何从 emacs 编写仅包含行号的文件,例如:

1
2
3
4
5

理想情况下,这将是您将执行的命令(如何执行?),可以告诉您要打印多少行。这可能吗?

4

3 回答 3

6

这是一个快速的 elisp 函数:

(defun write-line-numbers (n)
  (interactive "nNumber of lines: ")
  (save-excursion
    (with-output-to-temp-buffer "*lines*"
      (dotimes (line n)
        (princ (format "%d\n" (1+ line))))
      (set-buffer "*lines*")
      (write-file "lines.txt"))))

您可以使用(write-line-numbers 8)elisp 或M-x write-line-numbers 8交互式运行它。

或者您可以将上述内容保存为脚本并像这样运行 emacs:

emacs -Q --script write-line-numbers.el --eval '(write-line-numbers 8)'

但正如 Moritz 所指出的,在 emacs 之外还有更好的方法可以做到这一点。

于 2012-04-03T22:11:13.497 回答
3

你为什么不使用shell程序seq呢?例如seq 20,将打印 20 条整齐的行,编号为 1 到 20。

于 2012-04-03T22:09:25.367 回答
2

M-: (with-temp-file "foo.txt" (dotimes (i 15) (insert (format "%2d\n" (1+ i)))))

如果您经常这样做,请将其设为函数:

(defun write-sequence (length output-file)
  (interactive "nLength of sequence: \nFOutput file: ")
  (with-temp-file output-file
    (dotimes (i length) (insert (format "%d\n" (1+ i))))))
于 2012-04-04T09:03:51.103 回答