如何控制Emacs如何生成备份文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (5)
  • 关注 (0)
  • 查看 (81)

Emacs将备份文件命名为foo~我不喜欢在任何地方都记得。此外,如果我编辑了一个文件,在文件系统中的其他地方有一个硬链接,当我编辑完时,硬链接指向备份,这是令人困惑和可怕的。我怎样才能消除这些备份文件,或者让它们去同一个目录以外的其他地方呢?

提问于
用户回答回答于

Emacs备份/自动保存文件可能非常有用。但这些特点令人困惑。

备份文件

备份文件有~~9~,并应写入用户主目录。何时make-backup-files是非零Emacs自动创建原始文件的备份时,该文件是第一次从缓冲区保存。如果您正在编辑一个新文件,Emacs将在第二次保存该文件时创建一个备份。

无论您保存文件多少次,备份都保持不变。如果您关闭缓冲区,然后再次访问该文件,或者下次启动新的Emacs会话时,将生成一个新的备份文件。新备份反映了文件重新打开后或编辑会话开始时的内容。但是,现有的备份再也不会被触及。因此,我发现创建编号备份(参见下面的配置)很有用。

若要创建备份,请显式使用save-buffer(二)C-x C-s)带有前缀参数。

diff-backupdired-diff-backup将文件与其备份进行比较,反之亦然。但是没有恢复备份文件的功能。例如,在Windows下,要还原备份文件

C:\Users\USERNAME\.emacs.d\backups\!drive_c!Users!USERNAME!.emacs.el.~7~

它必须手动复制

C:\Users\USERNAME\.emacs.el

自动保存文件

自动保存文件使用哈希标记(#),并应在项目目录(以及实际文件)中本地写入。原因是自动保存文件只是Emacs创建的临时文件,直到文件再次被保存。

  • 在用户按下C-x C-s(二)save-buffer)保存文件Emacs自动保存文件-基于计数击键(auto-save-interval)或当您停止键入(auto-save-timeout)。
  • Emacs在崩溃时也会自动保存,包括使用shell命令杀死Emacs作业。

当用户保存文件时,自动保存的版本将被删除.。但是当用户退出文件而不保存文件时,Emacs或X会话崩溃,自动保存的文件仍然存在。

使用revert-bufferrecover-file若要恢复自动保存文件,请执行以下操作。注意,Emacs记录中断了会话,以便在名为~/。emacs.d/自动保存列表...recover-session函数将使用此信息。

从自动保存的字段中恢复的首选方法是M-x revert-buffer RETEmacs会问:“缓冲区最近被自动保存了。从自动保存文件还原?或“从文件文件名恢复缓冲区?”。如果是后者,则没有自动保存文件。例如,因为在键入另一个auto-save-intervall击键,在这种情况下,Emacs已经删除了自动保存文件.

现在自动保存默认禁用,因为它可以在连接到慢速机器时减慢编辑速度,而且许多文件包含敏感数据。

配置

下面是IMHO最有效的配置:

(defvar --backup-directory (concat user-emacs-directory "backups"))
(if (not (file-exists-p --backup-directory))
        (make-directory --backup-directory t))
(setq backup-directory-alist `(("." . ,--backup-directory)))
(setq make-backup-files t               ; backup of a file the first time it is saved.
      backup-by-copying t               ; don't clobber symlinks
      version-control t                 ; version numbers for backup files
      delete-old-versions t             ; delete excess backup files silently
      delete-by-moving-to-trash t
      kept-old-versions 6               ; oldest versions to keep when a new numbered backup is made (default: 2)
      kept-new-versions 9               ; newest versions to keep when a new numbered backup is made (default: 2)
      auto-save-default t               ; auto-save every buffer that visits a file
      auto-save-timeout 20              ; number of seconds idle time before auto-save (default: 30)
      auto-save-interval 200            ; number of keystrokes between auto-saves (default: 300)
      )

Sensitive data

另一个问题是,您不希望Emacs使用敏感数据传播文件副本。使用这种模式按每档计算。由于这是一个次要的模式,因此我将其重命名为sensitive-minor-mode...

为所有人启用它.VCF.GPG文件,在你的。Emacs使用的内容如下:

(setq auto-mode-alist
      (append
       (list
        '("\\.\\(vcf\\|gpg\\)$" . sensitive-minor-mode)
        )
       auto-mode-alist))

或者,只保护一些文件,比如.txt文件,请使用如下一行

// -*-mode:asciidoc; mode:sensitive-minor; fill-column:132-*-

在文件里。

热门问答

腾讯云广州一区DNS变更,需要怎么操作?

思潮澎湃轻描淡写的生活,但思潮澎湃
推荐
我也收到相关的通知了,这里分享下~ 2019年1月31日,腾讯云将对广州地区旧的基础网络DNS服务器(10.225.30.181、10.225.30.223)进行下线。在此期间,腾讯云提供最新的DNS服务器供您更新使用。 我们建议您尽快将DNS服务器配置进行更新,并且我们为您提供...... 展开详请

快照容量与费用的比例?如何关闭停用?

帅的惊动我国计算机大神
推荐已采纳
快照已于2019年1月22日0时启动正式商业化进程,商业化后所有存量快照和新产生的快照将根据快照使用的存储容量进行收费。 在快照商业化后,腾讯云仍旧会在国内主要地域为用户提供一定量的免费额度。免费额度策略如下: 免费额度覆盖范围为中国大陆地域,中国香港及海外地域暂无免费快照额...... 展开详请

无服务器云函数的cron表达式问题?

腾讯云serverless团队

腾讯云 · 产品团队 (已认证)

腾讯云无服务器云函数SCF产品
推荐
https://cloud.tencent.com/document/product/583/9708#cron-.E8.A1.A8.E8.BE.BE.E5.BC.8F.E8.AF.AD.E6.B3.95.E4.B8.80.EF.BC.88.E6.8E.A8.E8.8D.90.E...... 展开详请

云服务器-intelS2 标准入门型 带独立ip么?

Eli Qiao

腾讯 · 高级工程师 (已认证)

腾讯云CVM后台高级研发工程师
推荐

购买时,可以配置wan网ip,也可以之后添加eip

购买云服务器后上面的是否配套有数据库(mysql, sql server)和Web服务器等?

西风

renzha.net · 站长 (已认证)

www.renzha.net
推荐已采纳

买了服务器自己安装配置数据库即可,也可以另外选购性能更高,更安全可靠的云数据库。

无服务器云函数添加触发方式以错误码9000失败?

腾讯云serverless团队

腾讯云 · 产品团队 (已认证)

腾讯云无服务器云函数SCF产品
推荐

实在抱歉,最近这两天由于广州区 api 网关集群的配置量已超上限,导致 api 网关无法新增服务。目前 api 网关的研发同学已经在紧急扩容广州区集群了。

所属标签

扫码关注云+社区