Как я могу контролировать, как Emacs делает резервные копии файлов?
в Emacs добавляет резервное копирование файлов по имени foo~ везде, и мне не нравится помнить, чтобы удалить их. Кроме того, если я редактирую файл, который имеет жесткую ссылку где-то еще в файловой системе, жесткая ссылка указывает на резервную копию, когда я закончу редактирование, и это сбивает с толку и ужасно. Как я могу либо удалить эти резервные файлы, либо отправить их куда-то, кроме того же каталога?
5 ответов:
если вы когда-либо были сохранены в файле резервной копии Emacs, вы вероятно, они хотят больше, а не меньше. Это раздражает что они идут в том же каталоге, что и файл, который вы редактируете, но это легко изменить. Вы можете сделать все резервные файлы идут в каталоге что-то вроде следующего в ваш
.emacs.(setq backup-directory-alist `(("." . "~/.saves")))есть ряд тайных деталей, связанных с тем, как Emacs возможно создание резервных копий файлов. Должен ли он переименовать оригинал и выписать редактировать буфер? Что делать, если оригинал связан? В общем, самая безопасная, но самая медленная ставка-всегда делать резервные копии путем копирования.
(setq backup-by-copying t)если это слишком медленно по какой-то причине вы также можете взглянуть на
backup-by-copying-when-linked.так как ваши резервные копии теперь все на своем месте, вы можете захотеть скорее больше, чем меньше. Взгляните на Emacs документация для этих переменных (с
C-h v).(setq delete-old-versions t kept-new-versions 6 kept-old-versions 2 version-control t)наконец, если вы абсолютно должны иметь резервные копии файлов:
(setq make-backup-files nil)меня тошнит от одной мысли об этом.
Emacs резервное копирование / автоматическое сохранение файлов может быть очень полезно. Но эти особенности сбивают с толку.
резервное копирование файлов
резервные файлы имеют Тильды (
~или~9~) в конце и должны быть записаны в домашнюю директорию пользователя. Когдаmake-backup-filesis non-nil Emacs автоматически создает резервную копию исходного файла при первом сохранении файла из буфера. Если вы редактируете новый файл, Emacs создаст резервную копию при втором сохранении файла.независимо от того, сколько раз вы сохраняете файл, резервная копия остается неизменной. Если вы отключите буфер и затем снова посетите файл или в следующий раз запустите новый сеанс Emacs, будет создан новый файл резервной копии. Новая резервная копия отражает содержимое файла после повторного открытия или в начале сеансов редактирования. Но существующая резервная копия никогда не трогал. Поэтому я считаю полезным создавать нумерованные резервные копии (см. конфигурацию ниже).
для создания резервных копий явно используйте
save-buffer(C-x C-s) с аргументами префикс.
diff-backupиdired-diff-backupсравнивает файл с его резервной копией или наоборот. Но нет никакой функции для восстановления резервных копий файлов. Например, под Windows, чтобы восстановить файл резервной копииC:\Users\USERNAME\.emacs.d\backups\!drive_c!Users!USERNAME!.emacs.el.~7~он должен быть вручную скопирован как
C:\Users\USERNAME\.emacs.elавтоматическое сохранение файлов
автоматическое сохранение файлов с использованием хэш-меток (
#) и должны быть записаны локально в каталоге проекта (вместе с файлами). Причина в том, что файлы автоматического сохранения-это просто временные файлы, которые Emacs создает до тех пор, пока файл не будет сохранен снова (например, с поспешным послушанием).
- прежде чем пользователь нажимает
C-x C-s(save-buffer) для сохранения файла Emacs автоматически сохраняет файлы-на основе подсчета нажатий клавиш (auto-save-interval) или когда вы прекратить печатать (auto-save-timeout).- Emacs также автоматически сохраняет всякий раз, когда он падает, включая убийство задания Emacs с помощью команды оболочки.
когда пользователь сохраняет файл, автоматически сохраненная версия удаляется. Но когда пользователь выходит из файла без его сохранения, Emacs или X-сессия завершает работу, автоматически сохраненные файлы все еще существуют.
использовать
revert-bufferилиrecover-fileдля восстановления файлов автоматического сохранения. Обратите внимание, что Emacs записывает прерванные сеансы для последующего восстановления в файлы с именем ~/.в Emacs.д/автосохранение-список. Элемент
The принято отвечать is хорошо, но это может быть значительно улучшено дополнительно резервное копирование на каждый сохранить и резервное копирование versioned файлы.
во-первых, основные настройки, как описано в принят ответ:
(setq version-control t ;; Use version numbers for backups. kept-new-versions 10 ;; Number of newest versions to keep. kept-old-versions 0 ;; Number of oldest versions to keep. delete-old-versions t ;; Don't ask to delete excess backup versions. backup-by-copying t) ;; Copy all files, don't rename them.далее, также резервное копирование версионных файлов, которые Emacs не делает по умолчанию (вы не совершаете каждое спасение, верно?):
(setq vc-make-backup-files t)наконец, сделайте резервную копию каждое спасение, а не только первое. Мы делаем два виды резервных копий:
за сеанс резервного копирования: Один раз на первый сохранение буфера в каждом Сессии. Они имитируют поведение резервного копирования Emac по умолчанию.
за сохранение резервных копий: один раз на каждый сохранить. Emacs не делает этого путем по умолчанию, но это очень полезно, если вы оставите в Emacs работает в течение длительного время.
The резервные копии идут в отличающийся места и Emacs создает резервные копии dirs автоматически, если они не существуют:
;; Default and per-save backups go here: (setq backup-directory-alist '(("" . "~/.emacs.d/backup/per-save"))) (defun force-backup-of-buffer () ;; Make a special "per session" backup at the first save of each ;; emacs session. (when (not buffer-backed-up) ;; Override the default parameters for per-session backups. (let ((backup-directory-alist '(("" . "~/.emacs.d/backup/per-session"))) (kept-new-versions 3)) (backup-buffer))) ;; Make a "per save" backup on each save. The first save results in ;; both a per-session and a per-save backup, to keep the numbering ;; of per-save backups consistent. (let ((buffer-backed-up nil)) (backup-buffer))) (add-hook 'before-save-hook 'force-backup-of-buffer)Я очень заинтересовался этой темой после того, как я написал
$<вместо$@в своемMakefile, примерно через три часа после моего предыдущего коммита: Pвышеизложенное основано на Emacs Wiki page I сильно отредактировано.
другой способ настройки параметров резервного копирования - через интерфейс настройки. Введите:
M-x customize-groupа потом на
Customize group:командной строке введитеbackup.если вы прокрутите вниз до нижней части буфера, вы увидите Резервный Каталог Alist. Нажмите Показать Значение и установите первую запись списка следующим образом:
Regexp matching filename: .* Backup directory name: /path/to/your/backup/dirкроме того, вы можете отключить резервное копирование моей настройки Сделать Резервные Копии Файлов to
off.если вы не хотите, чтобы Emacs автоматически редактировать ваши
.emacsфайл, который вы хотите настройка файла настроек.
Comments