查看/重新加载 emacs 备份文件
Viewing / Reloading emacs backup files
我成功地使用下面的代码使 emacs 保存了每个文件的多个版本。但是我无法弄清楚您在 emacs 中使用什么命令将这些文件实际加载到缓冲区中。
我期待某种历史查看器命令!!!我什么也找不到。
(setq backup-directory-alist '(("." . "~/auto-saves")))
(setq version-control t
kept-old-versions 2 kept-new-versions 200
delete-old-versions t backup-by-copying t)
您可以直接打开保存文件的目录 (~/autosaves
)。但是 backup-walker 包要好得多。
更新:我强烈建议使用 no-littering
包来保持 ~/.emacs.d
(和 $HOME
)的清洁。这是我的备份配置(假设你有 use-package
和 melpa 设置):
(use-package no-littering)
(setq make-backup-files t
vc-make-backup-files t
version-control t
kept-new-versions 128
kept-old-versions 0
delete-old-versions t
backup-by-copying t)
(defun force-backup-of-buffer ()
(setq buffer-backed-up nil))
(add-hook 'before-save-hook #'force-backup-of-buffer)
(use-package backup-walker)
(let ((dir (no-littering-expand-var-file-name "auto-save/")))
(make-directory dir t)
(add-to-list 'auto-save-file-name-transforms `(".*" ,dir t) 'append))
如果您不想使用no-littering
,请设置backup-directory-alist
、tramp-persistency-file-name
、tramp-backup-directory-alist
和tramp-auto-save-directory
。
(setq emacs-persistence-directory
(expand-file-name "var" user-emacs-directory))
(let ((dir (expand-file-name "backup" emacs-persistence-directory)))
(unless (file-directory-p dir)
(make-directory dir t))
(setq backup-directory-alist `(("." . ,dir))))
(let ((backup-dir (concat emacs-persistence-directory "tramp-backup/")))
(setq tramp-persistency-file-name (concat emacs-persistence-directory
"tramp")
tramp-backup-directory-alist `(("." . ,backup-dir))
tramp-auto-save-directory (concat emacs-persistence-directory
"tramp-auto-save/"))
(dolist (d (list tramp-auto-save-directory backup-dir))
(unless (file-exists-p d)
(make-directory d t))))
旁注:自动保存是不同于备份的功能。备份会在您第一次保存缓冲区时保存副本 (C-x C-s
)。上面,我在 before-save-hook
上有函数 force-backup-of-buffer
来在每次保存时进行备份。每次进行一定数量的编辑时,自动保存都会保存一份副本。对于给定的文件,可以有多个备份,但只有一个自动保存。
我将 jpkotta 的答案保留为所选答案,因为 backup-walker 似乎对其他人有用。对于我的 OSX 盒子,我无法让备份模式工作,备份 walker 更专注于 DIFFS 而不仅仅是提供对备份文件的访问。
这是我破解的解决方案,有点恶心,但对我有用。
您将需要为您的环境编辑路径名。
(原文见https://www.emacswiki.org/emacs/ForceBackups)
我尝试了备份模式和备份目录 https://www.emacswiki.org/emacs/BackupDirectory,但这是第一个起作用的东西。)
这是做什么的:
- 它修复了 emacs,因此它 总是 进行自动保存(令人惊讶的是这不是默认设置)
- 它添加了命令“M-x history”以打开备份目录。
粗糙,但它有效。很伤心看到 Emacs 死了!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; FORCE-BACKUP-OF-BUFFER
;;; (See https://www.emacswiki.org/emacs/ForceBackups)
(defun dao-setup-force-backup-of-buffer()
(setq vc-make-backup-files t) ; Do backups even for version controlled files!
(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.
(add-hook 'before-save-hook 'force-backup-of-buffer)
)
(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-backups")))
(kept-new-versions 3))
(backup-buffer)))
(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)))
(defun history ()
(interactive)
(dired-find-file "/User/oblinger/emacs-backups")
)
我成功地使用下面的代码使 emacs 保存了每个文件的多个版本。但是我无法弄清楚您在 emacs 中使用什么命令将这些文件实际加载到缓冲区中。
我期待某种历史查看器命令!!!我什么也找不到。
(setq backup-directory-alist '(("." . "~/auto-saves")))
(setq version-control t
kept-old-versions 2 kept-new-versions 200
delete-old-versions t backup-by-copying t)
您可以直接打开保存文件的目录 (~/autosaves
)。但是 backup-walker 包要好得多。
更新:我强烈建议使用 no-littering
包来保持 ~/.emacs.d
(和 $HOME
)的清洁。这是我的备份配置(假设你有 use-package
和 melpa 设置):
(use-package no-littering)
(setq make-backup-files t
vc-make-backup-files t
version-control t
kept-new-versions 128
kept-old-versions 0
delete-old-versions t
backup-by-copying t)
(defun force-backup-of-buffer ()
(setq buffer-backed-up nil))
(add-hook 'before-save-hook #'force-backup-of-buffer)
(use-package backup-walker)
(let ((dir (no-littering-expand-var-file-name "auto-save/")))
(make-directory dir t)
(add-to-list 'auto-save-file-name-transforms `(".*" ,dir t) 'append))
如果您不想使用no-littering
,请设置backup-directory-alist
、tramp-persistency-file-name
、tramp-backup-directory-alist
和tramp-auto-save-directory
。
(setq emacs-persistence-directory
(expand-file-name "var" user-emacs-directory))
(let ((dir (expand-file-name "backup" emacs-persistence-directory)))
(unless (file-directory-p dir)
(make-directory dir t))
(setq backup-directory-alist `(("." . ,dir))))
(let ((backup-dir (concat emacs-persistence-directory "tramp-backup/")))
(setq tramp-persistency-file-name (concat emacs-persistence-directory
"tramp")
tramp-backup-directory-alist `(("." . ,backup-dir))
tramp-auto-save-directory (concat emacs-persistence-directory
"tramp-auto-save/"))
(dolist (d (list tramp-auto-save-directory backup-dir))
(unless (file-exists-p d)
(make-directory d t))))
旁注:自动保存是不同于备份的功能。备份会在您第一次保存缓冲区时保存副本 (C-x C-s
)。上面,我在 before-save-hook
上有函数 force-backup-of-buffer
来在每次保存时进行备份。每次进行一定数量的编辑时,自动保存都会保存一份副本。对于给定的文件,可以有多个备份,但只有一个自动保存。
我将 jpkotta 的答案保留为所选答案,因为 backup-walker 似乎对其他人有用。对于我的 OSX 盒子,我无法让备份模式工作,备份 walker 更专注于 DIFFS 而不仅仅是提供对备份文件的访问。
这是我破解的解决方案,有点恶心,但对我有用。 您将需要为您的环境编辑路径名。 (原文见https://www.emacswiki.org/emacs/ForceBackups) 我尝试了备份模式和备份目录 https://www.emacswiki.org/emacs/BackupDirectory,但这是第一个起作用的东西。)
这是做什么的: - 它修复了 emacs,因此它 总是 进行自动保存(令人惊讶的是这不是默认设置) - 它添加了命令“M-x history”以打开备份目录。
粗糙,但它有效。很伤心看到 Emacs 死了!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; FORCE-BACKUP-OF-BUFFER
;;; (See https://www.emacswiki.org/emacs/ForceBackups)
(defun dao-setup-force-backup-of-buffer()
(setq vc-make-backup-files t) ; Do backups even for version controlled files!
(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.
(add-hook 'before-save-hook 'force-backup-of-buffer)
)
(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-backups")))
(kept-new-versions 3))
(backup-buffer)))
(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)))
(defun history ()
(interactive)
(dired-find-file "/User/oblinger/emacs-backups")
)