Как сделать, чтобы Emacs автоматически обновлял все буферы при изменении файлов на диске?


176

У меня есть глобальная функция поиска и замены, не относящаяся к emacs, которая делает мои дисковые файлы более современными, чем мои буферы emacs (массово). Есть ли какой-нибудь способ сказать emacs обновить все буферы с диска одним махом, вместо того, чтобы каждый делать по отдельности, перезагружая файл?

Спасибо! D


global-auto-revert-mode сделал волшебство ...
Хорхе Агилар

Ответы:


229

(global-auto-revert-mode t)в вашем .emacs .


Это выглядит хорошо в тех случаях, когда я всегда хочу быть синхронизированным, спасибо! Я думаю, что в конечном итоге я буду использовать revbuffs, чтобы самостоятельно управлять конфликтами (в противном случае иногда я могу потерять несохраненные изменения, как работает мой рабочий процесс)
Дейв

2
Спасибо! Я использую комбинацию revbuffs и auto-revert-mode. auto-revert-mode отлично работает, когда я хочу перезаписать изменения.
Натан Еллин

12
@Dave: (global-) режим автореверса не вернет файл, если соответствующий буфер был изменен, поэтому не должно быть риска потери несохраненных изменений.
Lindydancer

Я установил переменную в .emacs, но когда я редактирую некоторый код xcode, затем читаю файл (уже открытый) в этой строке, редактирую в xcode, а не там, нужно вручную Mx revert-buffer. (Mac + emacs 24.3.1)
ericfang

6
Хорошо работает при переключении веток с помощью git. Спасибо!
Джастин Лейтгеб

10

Вот альтернативный вариант, если вы используете Emacs GUI (в Windows 7 у меня есть GNU Emacs 25.1.1):

  1. Нажмите «Опции» в меню
  2. Выберите «Настройка Emacs»
  3. Выберите «Сохраненные параметры»
  4. Тогда вы должны увидеть поле поиска , где вы вводите «глобальные автоматический REVERT-режим» и нажмите кнопку «Поиск» кнопка
  5. Нажмите «Включить» кнопку и убедитесь , что он читает «на» справа от кнопки
  6. Нажмите кнопку «Применить и сохранить» прямо под полем поиска

Если у вас уже есть несколько открытых файлов, вы должны увидеть этот эффект немедленно. Удачи!


3

Спасибо @Ashwin за указание (global-auto-revert-mode t). Я обнаружил, что Emacs не будет автоматически обновлять буферы, файлы которых были изменены на диске, только с этим изменением. С https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

По умолчанию режим Auto-Revert работает с использованием уведомлений о файлах, в результате чего ОС сообщает об изменениях в файловой системе. Вы можете отключить использование уведомлений о файлах, настроив переменную auto-revert-use-notify в значение nil, тогда Emacs будет проверять изменения файлов, опрашивая каждые пять секунд. Вы можете изменить интервал опроса через переменную auto-revert-interval.

После того, как я установил (auto-revert-use-notify nil), Emacs действительно обновлял все буферы каждые 5 секунд.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.