Emacs的临时文件和备份文件

本文是对这篇文章 Emacs的临时文件和备份文件 的细化和进一步说明.

临时文件(Auto-Save file)

正常情况下emacs退出后会删掉这个文件, 所以我觉得临时文件这个汉语名字更为准确一些. Auto-Save这个名字, 我开始以为是自动保存到原文件去的意思, 比如 Emacs:我已经十年没有按过保存按键了 里的 auto-save.el.

但是用过一段上面的 auto-save.el 后, 我还是更喜欢emacs默认的保存方式. 由自己决定什么时候把缓冲区中的文件保存到原文件中去. 默认情况下, 如果输入超过300个字符或是键鼠无动作超过30秒, emacs就会自动把内存里的缓冲区变动保存到临时文件 #file-name# 中. 如果由于断电等原因emacs异常退出, 没来得及保存, 可以使用 M-x recover-file 来恢复文件.

可以设置自动保存的参数, 比如:

(setq-default auto-save-timeout 15) ; 15秒无动作,自动保存
(setq-default auto-save-interval 100) ; 100个字符间隔, 自动保存

备份文件(Backup files)

因为会在原目录中留下 "file-name~" , 所以大家都比较烦. 而且现在可以通过 git 管理版本, 所以一般关掉这个功能.

(setq make-backup-files nil)

如果想保留这个功能, 又不想在当前目录下留下一堆 "file-name~" 烦人, 可以指定集中保存备份文件的目录.

(setq
     backup-by-copying t ; 自动备份
     backup-directory-alist
     '(("." . "~/.em_backup")) ; 自动备份在目录"~/.em_backup"下
     delete-old-versions t ; 自动删除旧的备份文件
     kept-new-versions 3 ; 保留最近的3个备份文件
     kept-old-versions 1 ; 保留最早的1个备份文件
     version-control t) ; 多次备份

自动备份文件有两种模式: 改名(Renaming)和复制(Copying). 默认是改名模式. 两种模式的区别可见 Copying vs. Renaming. 只有文件存在硬链接而且有多个文件名的情况下, 复制(Copying) 模式才有意义. 在改名模式下, 其他硬链接会依然链接到备份文件上. 而复制模式下, 其他硬链接会链接到新文件上.

打开复制模式:

(setq backup-by-copying t) ;使用复制模式备份文件

参考: How do I control how Emacs makes backup files?]

你可能感兴趣的:(Emacs的临时文件和备份文件)