9

Emacs をリロードせずに .emacs ファイルを変更できるようにしたいと考えています。

私が求めていることに答えるような3つの質問を見つけました(ここここここで見つけることができます)が、問題は、私が行った変更がトグルであり、2つの回答へのコメントとしてa1a2 ) でこれらの質問を説明すると、そこに示されている解決策 (Mx reload-file や Mx eval-buffer など) はトグルには適用されません。

コマンドで変数を再度切り替える方法があると思いますが、.emacs 全体をリロードし、すべての切り替えを指定せずに再評価する方法があれば、私はそれを好みます。

いずれにせよ、誰かが変数の値を切り替える方法を教えてくれたらありがたいです.1つのトグルを変更しただけで、そのためだけにEmacsを再起動するのではなく、コマンドでそれを行うことができます(私はEmacsが初めてです) )。この情報がどれほど役立つかはわかりませんが、適用した変更は次のとおりです(別の質問に対するこの回答から得たものです):

(setq skeleton-pair t)  
(setq skeleton-pair-on-word t)  
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)  
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)  
(global-set-key (kbd "{") 'skeleton-pair-insert-maybe)   
(global-set-key (kbd "<") 'skeleton-pair-insert-maybe)  

編集:変更が有効になるように、上記を.emacsに含めてEmacsをリロードしました。次に、すべてをコメントアウトして、Mx load-file を試しました。これはうまくいきません。以下の提案 (Cx Ce by PPは、最初にトグルを評価するために使用している場合は機能しますが、元に戻したい場合は機能しません)。そのようなものがあれば、コメントアウトを評価する何かが欲しい...

ありがとう :)

4

6 に答える 6

6

あなたが試してみたいかもしれないいくつかのこと:

Mx load-file(プロンプトが表示されたら、~/.emacs enterと入力します)。Mx は、メタ キー (通常Escは Linux および Windows デスクトップ) を押してから、通常のx文字キーを押すことを意味します。

または、.emacsファイルが開いているときに、実行する関数の閉じ括弧の直後にプロンプ​​トを配置して、 , と入力しCtrl-XますCtrl-E。これにより、カーソルの左側にある最も近い括弧のセットで囲まれたブロックが実行されます。

この最後の手法は、複雑な検索と置換によく使用します。XML ファイルを編集していて、終了タグを前の行に移動したいとします。現在の XML buffer(query-replace-regexp "[ \r\n\t]*</" "</")に入力し、閉じ括弧の直後にカーソルを置き、 , と入力Ctrl-XCtrl-Eます。

于 2010-06-01T12:26:11.043 に答える
4

*scratch* バッファーをいつでも使用して、式を評価できます。

変数を設定したい場合:

(setq スケルトンペア t)^J

未設定:

(setq スケルトンペア nil)^J

評価を呼び出すには ctrl-J を使用する必要があります。return (または ctrl-M) は機能しません。

これは、すべての Lisp 式で機能します。簡単な計算が必要な場合:

(+ 51 33)^J 84

または、フレームの幅を知りたい場合: (frame-width)^J 80

いじくり回している場合や、評価する非対話型のコマンドや変数がある場合に便利です。

于 2010-06-01T20:48:01.343 に答える
4

上記を .emacs に含め、Emacs をリロードして、変更を有効にしました。次に、すべてをコメントアウトして、Mx load-file を試しました。これはうまくいきません。

Emacsを起動したときにいくつかの変数とキーを設定したため、機能しません。.emacsこれらのコマンドをコメントアウトしてリロードしても元に戻せませ。元に戻すには、設定を手動で上書きする必要があります

(setq variable-name nil)

Mx global-unset-keyenter に続いて、設定を解除するキーを入力します。

于 2010-06-01T14:30:17.780 に答える
4

スケルトンペアのオン/オフを試してみたいと思いますか?

私はこれをしたくなるでしょう:

(setq skeleton-pair t)    ; turns skeleton-pair on
(setq skeleton-pair nil)  ; turns skeleton-pair off

.emacs で、試したい特定のバージョンの閉じ括弧の横にある Cx Ce を押します。もちろん、.emacs には必要な最終設定のみが含まれていることを確認する必要があります。

于 2010-06-01T14:23:48.367 に答える
2

私が実際にあなたの質問を理解したかどうかはわかりませんが(少し疲れています)、変更したもの(C-spc)をマークしてから、Mx eval-regionをマークしてみませんか?私がいくつかの主要なことをしていなければ、これは私が通常必要とすることをします。

于 2010-06-01T14:21:15.750 に答える
0

elispコードを評価するたびに、このemacsセッションのグローバルemacs環境に移動します。したがって、変数値を設定すると、.emacsをリロードしても環境に存在し続けます。

.emacs(または任意のlisp)を「サンドボックス」にプリロードしてテストできると便利です。.emacsを大幅にカスタマイズしているときは、通常、.emacsを編集するために1つのemacsを開き、評価するために別のemacsを開きます(環境の破損を防ぐために再起動できます)。

于 2010-06-11T09:23:10.770 に答える