如何在每次保存时进行Emacs备份?
我不时删除我不应该删除的文件,最糟糕的是我自己写的文件。因此,我多次被Emacs的备份功能所保存 但我的问题是,Emacs只在您第一次保存缓冲区时进行备份。有没有办法让Emacs在每次我按C-x C-s时都这样做 这就是my.emacs当前的样子(仅处理备份的部分): *剪断* 备份===== ;;启用备份文件。如何在每次保存时进行Emacs备份?,emacs,backup,Emacs,Backup,我不时删除我不应该删除的文件,最糟糕的是我自己写的文件。因此,我多次被Emacs的备份功能所保存 但我的问题是,Emacs只在您第一次保存缓冲区时进行备份。有没有办法让Emacs在每次我按C-x C-s时都这样做 这就是my.emacs当前的样子(仅处理备份的部分): *剪断* 备份===== ;;启用备份文件。 (setq生成备份文件t) ;;将所有备份文件保存在此目录中。 (setq备份目录列表(引号((“*”~/.emacs\u backups/”)) ;;始终通过复制
(setq生成备份文件t) ;;将所有备份文件保存在此目录中。
(setq备份目录列表(引号((“*”~/.emacs\u backups/”)) ;;始终通过复制进行备份(最安全,但速度最慢)
(通过复制t进行setq备份) ;;保存备份时,在文件末尾追加~1~(并增加数字)
(setq版本控制t) ;;定义要保留的文件的旧版本数(从
;最近的和向后计数的
(setq保留了新版本100)
*剪断*如果您想自己动手,请从这里开始:
(defun backup-and-save ()
(interactive)
(setq filename (buffer-file-name))
(write-file (concat filename (format-time-string "_" "%Y%m%d%H%M%S")))
(write-file filename)
)
它将副本与时间戳一起保存为originalfilename\u timestamp
当然,您可能会将其调整为存储在单独的备份文件夹中,或者添加其他“调整”。阅读以下内容:
我在.emacs中添加了以下行:
(defun force-backup-of-buffer ()
(setq buffer-backed-up nil))
(add-hook 'before-save-hook 'force-backup-of-buffer)
它使用标准备份/版本控制,但会重置标志,该标志指示在保存之前是否已在此会话中备份缓冲区
前两行定义了一个函数,用于重置指示在此会话期间是否备份了缓冲区的标志
最后一行添加了一个事件挂钩,该挂钩在保存之前执行函数
这正是我想要的。刚刚找到了这个..这个..这解决了一个我在读到这个问题之前从未意识到的问题。很酷的东西,谢谢:你应该把这些链接作为答案dala。它们确实解决了你的问题。另外,你是否经常删除自己的文件,以至于需要这样的东西?如果我正在处理源代码,我通常依靠我的版本控制系统来避免意外删除,这种情况很少发生。@Noufal我在短时间(比如一小时)内对文件做了很多更改。我不想经常提交文件。很好。我只是一直在努力解决这个问题。文档让我确信emacs是本机完成的,但我就是无法让它工作。确实如此。