[英]How can I reload .emacs after changing it?
如何才能使Emacs重新加載在.emacs
更新的所有定義,而無需重新啟動Emacs?
您可以使用命令load-file( Mx load-file
,然后按兩次return鍵以接受默認文件名,即正在編輯的當前文件)。
您也可以將點移動到任何sexp的末尾,然后按Cx Ce僅執行該sexp。 通常,如果只更改一兩行,則不必重新加載整個文件。
很奇怪,很方便
MX eval-buffer
這里沒有提到。
如果您的.emacs
是冪等的,它將立即評估緩沖區中的所有代碼,這是最快的方法。
通常,您只需重新評估更改的區域即可。 標記已更改的〜/ .emacs區域,然后使用Mx eval-region RET
。 這通常比重新評估整個文件更安全,因為編寫.emacs文件很容易,該文件在兩次加載后無法正常工作。
如果您在當前活動的緩沖區中打開了.emacs文件,請執行以下操作:
M-x eval-buffer
M-x load-file
~/.emacs
以下應該做...
M-x load-file
其他人已經按照您的說明回答了您的問題,但是我發現我通常想執行我剛剛編寫的行。 為此,在Lisp中按Ctrl Alt x可以正常工作。
鍵盤快捷鍵:
(defun reload-init-file ()
(interactive)
(load-file user-init-file))
(global-set-key (kbd "C-c C-l") 'reload-init-file) ; Reload .emacs file
M- :( (load user-init-file)
Eval:
提示符下鍵入它(包括括號) user-init-file
是一個變量,默認情況下保存~/.emacs
值(指向配置文件路徑) (load)
是(load-file)
較短,較舊且非交互式的版本; 它不是emacs命令(將在Mx中鍵入),而僅僅是elisp函數 M-:
> Mx
C-x C-e ;; current line
M-x eval-region ;; region
M-x eval-buffer ;; whole buffer
M-x load-file ~/.emacs.d/init.el
我建議您一開始不要這樣做。 相反,請啟動一個新的emacs會話並測試您所做的任何更改以查看它們是否正常運行。 這樣做的原因是避免使您處於無法操作的.emacs文件狀態,該文件無法加載或無法干凈加載。 如果您在原始會話中進行了所有編輯,而在新會話中進行了所有測試,則始終可以得到可靠的注釋掉有害代碼的工具。
當您最后對更改感到滿意時,請繼續使用其他答案之一重新加載。 我個人的喜好是僅eval
您已添加/更改的部分,然后僅突出顯示已添加/更改的代碼Mx eval-region
並調用Mx eval-region
。 如luapyad所指出的那樣,這樣做可以最大程度地減少所評估的代碼,從而最大程度地減少任何意外的副作用。
我目前正在使用Ubuntu 15.04; 我喜歡為此定義一個密鑰。
[M-插入]轉換為鍵盤上的alt-插入。
將其放在您的.emacs文件中:
(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
在您的初始化文件中定義它,並通過Mx reload-user-init-file調用
(defun reload-user-init-file()
(interactive)
(load-file user-init-file))
這是一種快速簡便的方法來快速測試您的配置。 您還可以在特定Lisp的末尾使用Cx Ce
來單獨執行某些功能。
Cx Ce運行命令eval-last-sexp(在global-map中找到),它是一個交互式的已編譯Lisp函數。
它綁定到Cx Ce。
(eval-last-exp EVAL-LAST-SEXP-ARG-INTERNAL)
先評估性愛; 回顯區域中的打印值。 使用prefix參數交互地將輸出打印到當前緩沖區中。
通常,此函數根據變量'eval-expression-print-length'和'eval-expression-print-level'的值截斷長輸出。 但是,如果前綴參數為零,則不存在這種截斷。 這樣的前綴參數還會使整數以幾種其他格式(八進制,十六進制和字符)打印。
如果“ eval-expression-debug-on-error”為非零(缺省值),則此命令安排所有錯誤進入調試器。
除了Mx eval-buffer或Mx加載文件之類的命令之外,您還可以從命令行重新啟動新的emacs:
emacs -q --load "init.el"
用法示例stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/
盡管Mx eval-buffer
可以工作,但是您可能會遇到切換和其他類似問題。 更好的方法可能是“標記”或突出顯示.emacs中的新內容(如果只是弄亂甚至是暫存緩沖區),然后是Mx eval-region
。 希望這可以幫助。
您可以像這樣為emacs設置鍵綁定
;; reload emacs configuration
(defun reload-init-file ()
(interactive)
(load-file "~/.emacs"))
(global-set-key (kbd "C-c r") 'reload-init-file)
希望這會有所幫助!
如果您碰巧在Emacs中打開了外殼,您還可以執行以下操作:
. ~/.emacs
可以節省一些按鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.