web-dev-qa-db-ja.com

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

非emacsグローバル検索および置換機能があり、これにより、ディスクファイルがemacsバッファよりも最新のものになります(まとめて)。 emacsに、ファイルをリロードすることで個別にバッファを個別に実行する代わりに、ディスクからすべてのバッファを一気に更新するよう指示する方法はありますか?

ありがとう! D

173
Dave

(global-auto-revert-mode t)。emacs

219
Ashwin

Emacs GUIを使用している場合の代替方法は次のとおりです(Windows 7では、Mine is GNU Emacs 25.1.1):

  1. メニューバーで"Options"をクリックします
  2. "Emacsのカスタマイズ"を選択します
  3. "Saved Options"を選択します
  4. 次に、"global-auto-revert-mode"と入力して"Search"ボタンを押す検索フィールドが表示されます。
  5. "Toggle"ボタンをクリックし、ボタンの右側に"on"と表示されていることを確認します。
  6. "Apply and Save"ボタンを検索フィールドのすぐ下に押します

すでにいくつかのファイルを開いている場合は、この効果がすぐに表示されるはずです。がんばろう!

10
benjaminz

(global-auto-revert-mode t)を指摘してくれた@Ashwinに感謝します。 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秒ごとにすべてのバッファーを実際に更新しました。

1
jdc