如何格式化emacs中dir下的所有文件?

lot*_*lot 9 emacs

在emacs中,我将文件格式化为:1)Cx h(或Mx标记 - 整个缓冲区)2)CM- \(或Mx缩进区域)

我需要帮助告诉我如何格式化目录下的所有文件?

Sea*_*ean 11

这是另一种方法:

首先,在*scratch*缓冲区中评估此函数定义:

(defun indent-marked-files ()
  (interactive)
  (dolist (file (dired-get-marked-files))
    (find-file file)
    (indent-region (point-min) (point-max))
    (save-buffer)
    (kill-buffer nil)))
Run Code Online (Sandbox Code Playgroud)

接下来,在目录顶层打开一个Dired缓冲区,在该目录下您要更改所有文件.给dired命令一个数字前缀,以便它要求交换机给出ls命令,并添加R(递归)开关:C-u C-x d R RET your-directory RET.

接下来,标记递归目录列表中的所有常规文件:首先*/标记所有目录,然后*t切换选择.

最后,运行以上命令:M-x indent-marked-files.

请注意,如果您已经有任何缓冲区访问任何目标文件,它们将被杀死indent-marked-files.另请注意,所有文件更改都不可撤消; 谨慎使用!我在一个简单的情况下测试它,它似乎按照描述工作,但我不保证.


leg*_*cia 8

创建一个宏来做它.在dired(C-x d)中打开目录,然后:

  1. 把点放在第一个文件上.
  2. F3开始录制宏.
  3. 点击RET打开文件.
  4. C-x h,格式化它C-M-\.
  5. 埋葬缓冲区M-x bury-buffer.你将回到直接缓冲区.
  6. 走下一条线.
  7. 点击F4停止录制宏.

所以现在你有一个宏打开当前行的文件,格式化它,回退到dired,并指向下一行.F4根据需要多次运行它.