问一个批量替换段落的问题,和批量beautify/其他操作

比如有这么个代码段,项目内很多文件(xx.html, path/to/xx.html)都用到了,

<header>
          <a class="logo" href="index.html"></a>

那替换成

<header>
         <h1><a class="logo" href="index.html">logo</a></h1>

这个示例就两行代码,实际中可能有更多行的代码,怎么去处理。 我目前是到sublime去 Ctrl+Shift+F (下图)进行批量替换

第二个问题就是批量操作文件了,比如项目内所有的html文件,我想全部执行一遍web-beautify-html 应该如何处理?

:slight_smile: 谢谢

跨文件批量替换可以查看 Spacemacs Rocks 第一季的视频,search and replace。

如果想对多个 buffer 执行命令,可以使用 dired 模式,按 m 去 mark 多去文件,然后执行

(defun zilongshanren/dired-do-command (command)
        "Run COMMAND on marked files. Any files not already open will be opened.
After this command has been run, any buffers it's modified will remain
open and unsaved."
        (interactive "CRun on marked files M-x ")
        (save-window-excursion
          (mapc (lambda (filename)
                  (find-file filename)
                  (call-interactively command))
                (dired-get-marked-files))))

这个要一个个去mark。。。。。要是有一堆,那不得。。

如果是 N 个,你自己写个 elisp 函数就行了,其实你这个需求根本不用去 mark, 只需要给 html-mode/web-mode 添加一个 hook,当你有修改 buffer 的时候自动执行 beautify 就好了。

你走弯路了。

嗯。这是一个方法。 不过这个如果是自己一个人的项目就还好,如果是多人合作的,由于一些原因,比如刚开始没约定好格式,或者之后发现各自的indent不一样等等,想批量修复一次,这个场景下还是得需要一个批量处理文件的方式。 当然这可以写一个批量处理脚本。 只是刚好emacs有个这个beautify(js/html),因此也许就有方法来实现。

第一个问题的话我用的是 helm-projectile-ag
然后C-c C-e,接着用evil-mc,C-c C-c