如何在更改后重新加载.emacs?
我怎样才能让Emacs重新加载我在.emacs
更新的所有定义,而无需重新启动Emacs?
你可以使用命令load-file( Mx load-file
,然后按回车两次接受默认文件名,这是当前正在编辑的文件)。
你也可以把点移动到任何sexp的末尾,然后按Cx Ce来执行那个sexp。 通常,如果您只是更改一两行,则无需重新加载整个文件。
很奇怪,非常方便
Mx eval-buffer
在这里没有提到。
如果你的.emacs
是幂等的,它会立即评估缓冲区中的所有代码,它是最快的方法。
如果您在当前活动的缓冲区中打开了.emacs文件:
Mx eval缓冲区
您通常可以重新评估更改的区域。 标记已经更改的〜/ .emacs的区域,然后使用Mx eval-region RET
。 这通常比重新评估整个文件更安全,因为编写一个.emacs文件很容易,加载两次后不能正常工作。
Mx load-file ~/.emacs
以下应该做到这一点…
Mx load-file
其他人已经如你所说的回答了你的问题,但是我发现我通常要执行我刚写的这些句子。 为此,lisp中的Ctrl Alt x可以正常工作。
我build议你最初不要这样做。 相反,开始一个新的emacs会话,并testing你所做的任何更改,看看他们是否正常工作。 这样做的理由是为了避免让你处于无法运行的.emacs文件状态,无法加载或无法加载干净。 如果您在原始会话中进行了所有的编辑工作,并且在新的会话中进行了所有的testing,那么您始终可以使用可靠的方式评论出错的代码。
当您最终满意您的更改时,请继续使用其他答案之一重新加载。 我个人的偏好是只eval
你添加/更改的部分,然后只需突出显示添加/更改的代码Mx eval-region
并调用Mx eval-region
。 这样做可以最大限度地减less所评估的代码,最大限度地减less任何无意的副作用,正如luapyad指出的那样。
Cx Ce ;; current line Mx eval-region ;; region Mx eval-buffer ;; whole buffer Mx load-file ~/.emacs.d/init.el
键盘快捷键:
(defun reload-init-file () (interactive) (load-file "~/.emacs")) (global-set-key (kbd "Cc Cl") 'reload-init-file) ; Reload .emacs file
我目前在Ubuntu 15.04上; 我喜欢为此定义一个关键。
[M插入]转换为我的键盘上的ALT插入。
把它放在你的.emacs文件中:
(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
虽然Mx eval-buffer
将工作,你可能会遇到问题与切换和其他类似的东西。 一个更好的方法可能是“标记”或突出显示你的.emacs中的新内容(或者甚至是临时缓冲区,如果你只是搞乱了),然后Mx eval-region
。 希望这可以帮助。
在init文件中定义它,并通过Mx reload-user-init-file调用
(defun reload-user-init-file() (interactive) (load-file user-init-file))
这是快速简单的方法来快速testing你的configuration。 您也可以在特定的lisp结束时使用Cx Ce
来单独执行某些function。
Cx Ce运行命令eval-last-sexp(在global-map中find),这是一个交互式编译的Lisp函数。
这是必然的Cx Ce。
(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
在点之前评估sexp; 在回波区域打印值。 以前缀参数交互式地输出到当前缓冲区。
通常,该函数根据variables“eval-expression-print-length”和“eval-expression-print-level”的值截断长输出。 但是,如果前缀参数为零,则不存在这种截断。 这样的前缀参数也会导致整数以多种格式(八进制,hex和字符)打印。
如果'eval-expression-debug-on-error'是非零的,这是默认的,这个命令安排所有的错误进入debugging器。
除了像Mx eval-buffer或Mx加载文件这样的命令之外,您可以从命令行重新启动一个新的emacs:
emacs -q --load "init.el"
用法示例stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/
你可以像这样设置emacs的键绑定
;; reload emacs configuration (defun reload-init-file () (interactive) (load-file "~/.emacs")) (global-set-key (kbd "Cc r") 'reload-init-file)
希望这会有所帮助!
如果你碰巧在Emacs里面打开了一个shell,你也可以这样做:
. ~/.emacs
可以保存几个键击。