13

一个问题已经被问到如何.emacs在更改文件后重新加载文件

建议的解决方案是使用M-x load-fileM-x eval-region RET更改区域。

这些解决方案都不会影响我的其他开放缓冲区。有没有办法.emacs为所有打开的缓冲区重新加载文件?

我还应该注意到,由于对该答案M-x load-file的评论中概述的原因,它没有达到预期的效果。

4

2 回答 2

18

您的 .emacs 文件是一个全局配置,只被评估一次。它不会单独应用于每个缓冲区。

你如何真正实现你想要的实际上将取决于那些 .emacs 更改是什么。有的elisp只会在第一次被求值时生效;或者当缓冲区改变主要模式时;或加载文件时;等等等等……

如果您想重新加载部分或全部文件缓冲区,ibuffer这很容易:

  • M-x ibuffer RET启动 ibuffer(我建议将其绑定到C-xC-b)。
  • /f.RET按文件名正则表达式过滤.以匹配任何文件名。
  • m(on [default]) 标记所有过滤的缓冲区。
  • V(大写)恢复所有标记的缓冲区。

或者您可以将步骤 2+3 替换为M-x ibuffer-mark-by-file-name-regexp RET . RET. 您可能希望将该命令绑定到*f

;; Bind `ibuffer-mark-by-file-name-regexp' to *f
(eval-after-load "ibuffer"
  '(define-key ibuffer-mode-map (kbd "* f") 'ibuffer-mark-by-file-name-regexp))

键入以查看默认绑定的*c-h所有其他命令。ibuffer-mark-*

于 2011-08-27T02:04:11.203 回答
3

这可能会让你觉得蛮力,但是

  • 它肯定会重新加载您的 init 文件(考虑替代 .emacs
  • 它将重新加载所有打开的缓冲区(前提是您使用的是桌面,您应该这样做)
  • 这很容易

    C-x C-c
    emacs --debug-init &
    
于 2011-08-27T02:36:21.093 回答