首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查看/重新加载emacs备份文件

查看/重新加载emacs备份文件
EN

Stack Overflow用户
提问于 2016-08-23 02:33:13
回答 2查看 863关注 0票数 2

我正在成功地使用下面的代码来使emacs保存每个文件的许多版本。但我不知道您在emacs中实际使用了哪些命令将这些文件加载到缓冲区中。

我期待着某种历史查看者的命令!我什么也找不到。

代码语言:javascript
复制
(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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-23 17:21:47

您可以打开保存它们的目录中的文件(~/autosaves)。但是后援步行器包要好得多。

更新:我强烈建议使用no-littering包来保持~/.emacs.d (和$HOME)的清洁。下面是我的备份配置(假设您已经设置了use-package和melpa ):

代码语言:javascript
复制
(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-alisttramp-persistency-file-nametramp-backup-directory-alisttramp-auto-save-directory

代码语言:javascript
复制
(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)时保存副本。上面,我有一个函数force-backup-of-bufferbefore-save-hook上备份每次保存。每次进行一定数量的编辑时,Autosave都保存一个副本。对于给定的文件,可以有许多备份,但只有一个自动保存。

票数 3
EN

Stack Overflow用户

发布于 2016-09-06 22:50:28

我把jpkotta的答案作为选择的答案,因为后援步行者似乎适合其他人。对于我的OSX盒,我无法获得备份模式的工作,备份步行器更专注于差异,而不仅仅是提供对备份文件的访问。

这是我被黑的解决方案--有点恶心,但对我来说很管用。您需要编辑环境的路径名。(原始版本见https://www.emacswiki.org/emacs/ForceBackups ),我尝试过备份模式和备份目录https://www.emacswiki.org/emacs/BackupDirectory,但这是第一件起作用的事情。)

它是这样做的:-它修复了emacs,所以它总是自动保存(令人惊讶的是,这不是默认的)-它添加了命令M历史‘’来打开备份目录。

很粗糙,但很管用。看到Emacs死了真难过!

代码语言:javascript
复制
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;   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")
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39091433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档