web-dev-qa-db-ja.com

変更後に.emacsをリロードするにはどうすればよいですか?

Emacsを再起動せずに.emacsで更新したすべての定義をEmacsに再読み込みさせるにはどうすればよいですか?

351
Zubair

コマンドload-file(M-x load-file、次にReturnキーを2回押して、デフォルトのファイル名(現在編集中のファイル)を受け入れます。

また、ポイントを任意のsexpの最後に移動して押すこともできます C-xC-e そのsexpだけを実行します。通常、1行または2行を変更するだけであれば、ファイル全体をリロードする必要はありません。

315
Bryan Oakley

非常に奇妙なこと

M-x eval-buffer

ここでは言及されていません。

.emacsがべき等である場合、バッファ内のすべてのコード(その最も速いメソッド)を即座に評価します。

139
Peter

通常、変更された地域を再評価するだけです。変更した〜/ .emacsの領域をマークして、M-x eval-region RETを使用します。これは、ファイル全体を再評価するよりも多くの場合安全です。なぜなら、2回読み込まれた後すぐに動作しない.emacsファイルを書くのは簡単だからです。

42
Dale Hagglund

現在アクティブなバッファーで.emacsファイルを開いている場合:

M-x eval-buffer
36
Dominic Rodger
M-x load-file
~/.emacs
26
digitaldreamer

以下はそれを行う必要があります...

M-x load-file
13
Pace

他の人はすでに述べたようにあなたの質問にすでに答えましたが、私は通常、私が書いたばかりの行を実行したいと思います。そのために、 CtrlAltx LISPではうまく機能します。

11
Bahbar

溶液

M-: (load user-init-file)


ノート

  • Eval:プロンプトに入力します(括弧を含む)
  • user-init-file は、デフォルトで~/.emacs値(構成ファイルのパスを指す)を保持する変数です
  • (load)(load-file) のより短く、古い、非対話型バージョンです。 emacsコマンドではありません(入力する M-x)しかし、単なるelisp関数

結論

M-:> M-x

9
user4104817

キーボードショートカット:

(defun reload-init-file ()
  (interactive)
  (load-file user-init-file))

(global-set-key (kbd "C-c C-l") 'reload-init-file)    ; Reload .emacs file
8
Matt Kneiser

最初はこれをしないことをお勧めします。代わりに、新しいemacsセッションを開始し、加えた変更をテストして、正しく機能するかどうかを確認します。このようにする理由は、操作できない.emacsファイルが存在する状態にならないようにするためです。このファイルは、ロードに失敗するか、正常にロードできません。元のセッションですべての編集を行い、新しいセッションですべてのテストを行うと、問題のあるコードをコメントアウトするための信頼できる何かが常に得られます。

最終的に変更に満足したら、次に進み、他の回答の1つを使用して再ロードします。私の個人的な好みは、追加/変更したセクションだけをevalし、追加/変更したコードの領域を強調表示してM-x eval-regionを呼び出すことです。そうすることで、評価されるコードが最小化され、luapyadが指摘するように、意図しない副作用が最小限に抑えられます。

7
Joe Casadonte
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
6
WisdomFusion

現在Ubuntu 15.04を使用しています。このためのキーを定義するのが好きです。
[M-insert]はキーボードのalt-insertに変換されます。
これを.emacsファイルに追加します。

(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
4
AAAfarmclub

Initファイルで定義し、M-x reload-user-init-fileで呼び出します

(defun reload-user-init-file()
  (interactive)
  (load-file user-init-file))
3
jacekmigacz

M-x eval-bufferは機能しますが、トグルなどの問題が発生する可能性があります。より良いアプローチは、.emacsの新しいものを「マーク」または強調表示すること(または、単に混乱している場合はスクラッチバッファー)してからM-x eval-regionにすることです。お役に立てれば。

2
user1026139

Mx eval-bufferまたはMx load-fileなどのコマンドのほかに、コマンドラインから新しいemacsを再起動します。

emacs -q --load "init.el"

使用例 stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/

2
Picaud Vincent

設定をすばやくテストするための迅速で簡単な方法を次に示します。特定のLISPの最後でC-x C-eを使用して、特定の機能を個別に実行することもできます。

C-x C-eは、コマンドeval-last-sexp(global-mapにあります)を実行します。これは、インタラクティブにコンパイルされたLISP関数です。

C-x C-eにバインドされています。

(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)

ポイントの前にsexpを評価します。エコー領域に値を出力します。対話的に、前置引数を使用して、出力を現在のバッファーに出力します。

通常、この関数は、変数「eval-expression-print-length」および「eval-expression-print-level」の値に従って長い出力を切り捨てます。ただし、プレフィックス引数がゼロの場合、そのような切り捨てはありません。このようなプレフィックス引数により、整数がいくつかの追加形式(8進数、16進数、および文字)で出力されます。

「eval-expression-debug-on-error」がデフォルトの非nilの場合、このコマンドはすべてのエラーがデバッガーに入るように調整します。

2
Xinyang Li

このようにemacsにキーバインドを設定できます

;; reload emacs configuration
(defun reload-init-file ()
  (interactive)
  (load-file "~/.emacs"))

(global-set-key (kbd "C-c r") 'reload-init-file) 

これが役立つことを願っています!

1
Vinh Trieu