是否有一个 emacs 扩展程序在文件被编辑时对文件进行定期快照(每分钟一次,每 x 击键一次,等等),类似于 Eclipse 中的更改历史记录或 Google Docs 和其他程序中的编辑历史记录?
我希望有一些东西可以让我轻松浏览我每天所做的更改 - 是否已经写过类似的东西?
编辑
我应该更具体 - 我不是在寻找 VCS。我正在寻找一种次要模式或类似的东西,我可以打开并在磁盘上保存修订的硬拷贝。
有一个称为自动保存的内置功能,可以在 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)
我使用出色的备份漫游器来浏览备份。
我为此找到的最佳解决方案是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
.
如果您真的很重视保留更改,我强烈建议您开始使用 git。它适用于您的 windows 和 linux 编码环境。我用它来来回移植代码中的更改。它在修复所有小行尾和合并更改方面做得很好。
如果您真的只是希望它保留旧版本,那么 emacs 可以在您每次保存时创建一个新备份。它只是在您当前文件旁边创建另一个文件。这样您就可以控制它创建新备份的频率(每次保存时)。
这是一个讨论选项的好页面:
ftp://ftp.gnu.org/pub/old-gnu/Manuals/emacs-20.7/html_chapter/emacs_18.html#SEC109
试试http://www.emacswiki.org/emacs/BackupEachSave
它救了我很多次,让我可以回溯。