你如何让emacs将行号写入文件?

时间:2012-04-03 21:40:32

标签: emacs

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

1
2
3
4
5

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

3 个答案:

答案 0 :(得分: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"))))

您可以在elisp中使用(write-line-numbers 8)或以交互方式使用 M-x写行数字8 运行它。

或者您可以将上述内容保存为脚本并运行emacs,如下所示:

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

但正如莫里茨指出的那样,有更好的方法可以在emacs之外做到这一点。

答案 1 :(得分:3)

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

答案 2 :(得分:1)

  

米 - :       (with-temp-file“foo.txt”         (dotimes(i 15)(插入(格式“%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))))))