您将如何从 emacs 编写仅包含行号的文件,例如:
1
2
3
4
5
理想情况下,这将是您将执行的命令(如何执行?),可以告诉您要打印多少行。这可能吗?
这是一个快速的 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 之外还有更好的方法可以做到这一点。
你为什么不使用shell程序seq
呢?例如seq 20
,将打印 20 条整齐的行,编号为 1 到 20。
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))))))