Emacsを再起動せずに.emacs
で更新したすべての定義をEmacsに再読み込みさせるにはどうすればよいですか?
コマンドload-file(M-x load-file
、次にReturnキーを2回押して、デフォルトのファイル名(現在編集中のファイル)を受け入れます。
また、ポイントを任意のsexpの最後に移動して押すこともできます C-xC-e そのsexpだけを実行します。通常、1行または2行を変更するだけであれば、ファイル全体をリロードする必要はありません。
非常に奇妙なこと
M-x eval-buffer
ここでは言及されていません。
.emacs
がべき等である場合、バッファ内のすべてのコード(その最も速いメソッド)を即座に評価します。
通常、変更された地域を再評価するだけです。変更した〜/ .emacsの領域をマークして、M-x eval-region RET
を使用します。これは、ファイル全体を再評価するよりも多くの場合安全です。なぜなら、2回読み込まれた後すぐに動作しない.emacsファイルを書くのは簡単だからです。
現在アクティブなバッファーで.emacsファイルを開いている場合:
M-x eval-buffer
M-x load-file
~/.emacs
以下はそれを行う必要があります...
M-x load-file
他の人はすでに述べたようにあなたの質問にすでに答えましたが、私は通常、私が書いたばかりの行を実行したいと思います。そのために、 CtrlAltx LISPではうまく機能します。
M-: (load user-init-file)
Eval:
プロンプトに入力します(括弧を含む)user-init-file
は、デフォルトで~/.emacs
値(構成ファイルのパスを指す)を保持する変数です(load)
は (load-file)
のより短く、古い、非対話型バージョンです。 emacsコマンドではありません(入力する M-x)しかし、単なるelisp関数M-:
> M-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
最初はこれをしないことをお勧めします。代わりに、新しいemacsセッションを開始し、加えた変更をテストして、正しく機能するかどうかを確認します。このようにする理由は、操作できない.emacsファイルが存在する状態にならないようにするためです。このファイルは、ロードに失敗するか、正常にロードできません。元のセッションですべての編集を行い、新しいセッションですべてのテストを行うと、問題のあるコードをコメントアウトするための信頼できる何かが常に得られます。
最終的に変更に満足したら、次に進み、他の回答の1つを使用して再ロードします。私の個人的な好みは、追加/変更したセクションだけをeval
し、追加/変更したコードの領域を強調表示してM-x eval-region
を呼び出すことです。そうすることで、評価されるコードが最小化され、luapyadが指摘するように、意図しない副作用が最小限に抑えられます。
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
現在Ubuntu 15.04を使用しています。このためのキーを定義するのが好きです。
[M-insert]はキーボードのalt-insertに変換されます。
これを.emacsファイルに追加します。
(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
Initファイルで定義し、M-x reload-user-init-fileで呼び出します
(defun reload-user-init-file()
(interactive)
(load-file user-init-file))
M-x eval-buffer
は機能しますが、トグルなどの問題が発生する可能性があります。より良いアプローチは、.emacsの新しいものを「マーク」または強調表示すること(または、単に混乱している場合はスクラッチバッファー)してからM-x eval-region
にすることです。お役に立てれば。
Mx eval-bufferまたはMx load-fileなどのコマンドのほかに、コマンドラインから新しいemacsを再起動します。
emacs -q --load "init.el"
使用例 stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/
設定をすばやくテストするための迅速で簡単な方法を次に示します。特定の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の場合、このコマンドはすべてのエラーがデバッガーに入るように調整します。
このようにemacsにキーバインドを設定できます
;; reload emacs configuration
(defun reload-init-file ()
(interactive)
(load-file "~/.emacs"))
(global-set-key (kbd "C-c r") 'reload-init-file)
これが役立つことを願っています!