如何自动缩进多个文件?

时间:2018-08-13 01:21:19

标签: html auto-indent

当前,我生成静态文件,但这些文件未正确缩进。 Emacs的自动缩进可与c-x h tab配合使用,但这是针对每个文件的。我想自动缩进多个文件(例如50左右,因此手动执行是不可行的)。

有什么办法可以做到这一点?无论是使用其他文本编辑器还是脚本等。如果有帮助,大多数文件都是.html

1 个答案:

答案 0 :(得分:0)

我用一些HTML文件测试了下面的代码,它运作良好。

(defun indent-file (file-name)
  (save-window-excursion
    (find-file file-name)
    (indent-region (point-min) (point-max))
    (write-region nil nil file-name)))

;; argv is a list stores command line option. In this case, it will be ("/your/directory/path").
;; directory-files-recursively will find files recursively, and it needs emacs 25.1 or later.
(let* ((target-dir (car argv))
       (target-file-names  (directory-files-recursively target-dir ".*.html$")))
  (dolist (file-name target-file-names)
    (indent-file file-name)))
  1. 将上面的代码另存为'indent-files.el'
  2. 在终端机上运行emacs --script indent-files.el "/your/directory/path"

如果您确实想使用emacs lisp作为通用脚本语言,那将非常棘手。这里有一些提示:https://swsnr.de/blog/2014/08/12/emacs-script-pitfalls/