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