保存多个文件的EMACS输出

时间:2014-02-11 11:20:29

标签: python emacs

我正在使用EMACS包(vax)来计算各个区域的一些倾斜度。目前我有大量的文本文件,我在EMACS中打开每个文件,执行一个命令<Shift> 3,手动将输出记录到迷你缓冲区,最后添加这些输出。这非常耗费时间,而且我一直在犯错误。

我真的想自动化这个过程,任何人都可以给我一些关于如何编写某种脚本的建议,该脚本将打开指定目录中的每个文件,在输入命令后记录迷你缓冲区的输出{{1并在连续输出通过目录时对它进行求和?

我不熟悉LISP或EMACS,我已经阅读了后者的教程。我对如何用Python编写代码有一个粗略的工作知识,如果有一种方法可以在python脚本中执行这一切,这将非常有帮助。

1 个答案:

答案 0 :(得分:3)

如何批量运行emacs的分步说明:

  1. 首先,您需要获取要操作的文件列表。 find-name-dired应该足以满足大多数需求。打开dired 在项目的基本目录中, M-x find-name-dired。 接受基本目录的默认值,输入实例*.py作为通配符。

  2. 您现在拥有一个包含您感兴趣的所有文件名的缓冲区。 用 t 选择它们。您可以使用优化您的选择 m DEL

  3. 使用启动shell命令。使用此命令模板作为开头:

    emacs --batch ? --eval "(message \"%s %s\" (buffer-name) (buffer-size))"
    
  4. 现在,您可以将所有输出整齐地放在shell输出缓冲区中。

  5. 上面的代码显示了每个文件的缓冲区大小。 您应该用您的代码替换(buffer-size),即

    (if (equal vax-region (buffer-substring-no-properties (point-min) (point-max))) nil (vax-quit) (setq vax-region (buffer-substring-no-properties (point-min) (point-max)))) (catch (quote chromatic) (catch (quote singular) (vax-number)))

    整个事情应该在一条线上。 或者,您可以使用bash脚本将调用包装到emacs --batch 并从dired调用它。

    UPD:尝试运行此代码

    而不是(buffer-size),请(progn (vax-mode) (call-interactively (vax-col vax-number)))

    UPD:加载vax.el

    使用emacs --batch ? -l ~/path/to/vax.el --eval "(progn (vax-mode) (message \"%s %s\" (buffer-name) (call-interactively (vax-col vax-number))))"