ディスク上でファイルが変更されたときにEmacsがすべてのバッファーを自動更新する方法は?


176

emacs以外のグローバル検索および置換機能を使用しているため、ディスクファイルがemacsバッファー(一括)よりも最新の状態になります。emacsに、ファイルをリロードして個別にバッファリングする代わりに、ディスクからすべてのバッファを1度にリフレッシュするように指示する方法はありますか?

ありがとう!D


global-auto-revert-modeが魔法を使いました...
ホルヘ・アギラール2018

回答:


229

(global-auto-revert-mode t)あなたの.emacsで


これは私が常に同期したい場合によく見えます、ありがとう!私は自分で競合を管理できるようにrevbuffを使用することになると思います(そうしないと、保存されていない変更が失われる可能性があり、ワークフローが現在機能している方法です)
Dave

2
ありがとうございました!私はrevbuffsとauto-revert-modeの組み合わせを使用しています。auto-revert-modeは、変更を上書きしたい場合に最適です。
Natan Yellin

12
@Dave:(global-)auto-reverse-modeは、対応するバッファーが変更された場合、ファイルを元に戻しません。そのため、保存されていない変更を失うリスクはありません。
Lindydancer

変数を.emacsに設定しましたが、コードxcodeを編集してから、その行でファイルを(既に開いている状態で)読み取り、そこにないxcodeで編集します。Mxrevert-bufferが必要です(mac + emacs 24.3.1)
ericfang 2013年

6
gitでブランチを切り替えるときにうまく動作します。ありがとう!
Justin Leitgeb 2013年

10

Emacs GUIを使用している場合の代替策は次のとおりです(私のものはWindows 7上のGNU Emacs 25.1.1です):

  1. メニューバーの「オプション」をクリックします
  2. 「Emacsのカスタマイズ」を選択します
  3. 「保存されたオプション」を選択します
  4. 次に、「global-auto-revert-mode」と入力して「検索」ボタンを押す検索フィールドが表示されます。
  5. 「トグル」ボタンをクリックし、ボタンの右側が「オン」になっていることを確認します
  6. 押して「適用と保存」検索フィールドの下のボタンを右に

すでにいくつかのファイルを開いている場合は、これがすぐに反映されます。幸運を!


3

指摘してくれた@Ashwinに感謝し(global-auto-revert-mode t)ます。Emacsはこの変更だけではディスク上のファイルが変更されたバッファを自動的に更新しないことがわかりました。https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.htmlから:

デフォルトでは、自動復帰モードはファイル通知を使用して機能します。これにより、ファイルシステムの変更がOSによってEmacsに報告されます。変数auto-revert-use-notifyをnil値にカスタマイズすることにより、ファイル通知の使用を無効にできます。その後、Emacsは5秒ごとにポーリングすることでファイルの変更をチェックします。変数auto-revert-intervalを使用して、ポーリング間隔を変更できます。

私がを設定した後(auto-revert-use-notify nil)、Emacsは実際にすべてのバッファを5秒ごとに更新しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.