5

是否有一个 emacs 扩展程序在文件被编辑时对文件进行定期快照(每分钟一次,每 x 击键一次,等等),类似于 Eclipse 中的更改历史记录或 Google Docs 和其他程序中的编辑历史记录?

我希望有一些东西可以让我轻松浏览我每天所做的更改 - 是否已经写过类似的东西?

编辑

我应该更具体 - 我不是在寻找 VCS。我正在寻找一种次要模式或类似的东西,我可以打开并在磁盘上保存修订的硬拷贝。

4

4 回答 4

5

有一个称为自动保存的内置功能,可以在 N 次击键后保存(也许在 M 秒后,我不确定)。如果 Emacs 崩溃,我通常会使用它,而不是查看我所做的编辑;撤消更好。这是我的配置:

(setq autosave-dir (concat user-emacs-directory "autosaves/")
      auto-save-list-file-prefix (concat emacs-persistence-directory
                                         "autosave-list"))
(if (not (file-exists-p autosave-dir))
    (make-directory autosave-dir t))
(add-to-list 'auto-save-file-name-transforms
             `("\\`/?\\([^/]*/\\)*\\([^/]*\\)\\'" ,(concat autosave-dir "\\2") t))
;; tramp autosaves
(setq tramp-auto-save-directory (concat user-emacs-directory "tramp-autosaves/"))
(if (not (file-exists-p tramp-auto-save-directory))
    (make-directory tramp-auto-save-directory))

还有一个备份系统,可以在每次保存后创建一个副本(不是自动保存)。我将它用于我认为您所要求的 - 查看自我上次 VCS 提交以来的历史记录。这是我的配置:

(setq make-backup-files t
      vc-make-backup-files t
      version-control t
      kept-new-versions 256
      kept-old-versions 0
      delete-old-versions t
      backup-by-copying t)
(setq backup-dir (concat user-emacs-directory "backup/"))
(if (not (file-exists-p backup-dir))
    (make-directory backup-dir))
(add-to-list 'backup-directory-alist
             `(".*" . ,backup-dir))
(defun force-backup-of-buffer ()
  (setq buffer-backed-up nil))
(add-hook 'before-save-hook 'force-backup-of-buffer)
;; this is what tramp uses
(setq tramp-backup-directory-alist backup-directory-alist)

(add-to-path "backup-walker")
(autoload 'backup-walker-start "backup-walker"
  "start walking with the latest backup" t)

我使用出色的备份漫游器来浏览备份。

于 2012-05-11T15:54:52.953 回答
5

我为此找到的最佳解决方案是undo-tree,它是与 vim 等效的 Emacs gundo:它使您可以可视化撤消/重做树,浏览更改并在不同版本之间来回切换。

undo-tree可以使用 ELPA 安装;安装后,将以下内容添加到.emacs

(require 'undo-tree)
(global-undo-tree-mode)

然后可以使用Ctrl- x u( undo-tree-visualize) 可视化撤消树。可以使用箭头键以非常直观的方式导航不同的“版本”。

历史也可以使用undo-tree-save-history.

于 2014-04-23T21:22:31.167 回答
4

如果您真的很重视保留更改,我强烈建议您开始使用 git。它适用于您的 windows 和 linux 编码环境。我用它来来回移植代码中的更改。它在修复所有小行尾和合并更改方面做得很好。

如果您真的只是希望它保留旧版本,那么 emacs 可以在您每次保存时创建一个新备份。它只是在您当前文件旁边创建另一个文件。这样您就可以控制它创建新备份的频率(每次保存时)。

这是一个讨论选项的好页面:

ftp://ftp.gnu.org/pub/old-gnu/Manuals/emacs-20.7/html_chapter/emacs_18.html#SEC109

于 2012-05-10T22:24:42.787 回答
1

试试http://www.emacswiki.org/emacs/BackupEachSave

它救了我很多次,让我可以回溯。

于 2012-05-11T15:31:39.613 回答