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

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

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

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-*-

在文件里。

热门问答

腾讯云 COS 怎么才能外链调用 m3u8 到别的网站播放?

滑稽园扛把子

Swoole · PHP开发工程师 (已认证)

As a PHP Developer
推荐
设置公有读私有写:当访问对象时,COS 读取到对象的权限为公有读,此时无论存储桶为何种权限,对象都可以被直接下载 设置步骤 登录 对象存储控制台,选择左侧菜单栏【存储桶列表】,进入存储桶列表页面。单击需要修改对象权限的对应存储桶,进入存储桶。 📷 找到需要设置权限的对象(如 e...... 展开详请

Ubuntu搭建的WordPress如何修改php.ini?

滑稽园扛把子

Swoole · PHP开发工程师 (已认证)

As a PHP Developer
推荐
php新手很多不知道怎么查配置文件在哪,这里提供一个很简单的方法 使用 php -i 命令可以打印php的详细信息,可以把这堆东西输出一下 php -i > outputphp.txt,结合 grep 查找命令 php -i| grep php.ini 打印结果如下 Config...... 展开详请

归档存储采用的存储介质是什么, 安全可靠吗?

滑稽园扛把子

Swoole · PHP开发工程师 (已认证)

As a PHP Developer
推荐
归档存储主要是针对海量、重要且访问频率极低的非结构化数据进行长期的归档保存和备份管理。 在数据安全层面,归档存储提供数据锁定机制,防止数据被修改和删除,保障数据安全。 技术架构: image.png 与对象存储的差异 归档存储 CAS 是一项离线存储服务,不同于在线的对象存储 ...... 展开详请

在按官网手册排错后依然提示1004错误?

看你的代码好像是短信相关的代码,1004错误代表请求包解析失败,通常情况下是由于没有遵守 API 接口说明规范导致的。 建议您通过以下方式定位解决: 首先,要确认发送的请求是否是标准的 json 格式; 第二,检查是否有将单引号当做双引号使用(json 标准应该是双引号); 第...... 展开详请

redis数据库应该怎样连接???

滑稽园扛把子

Swoole · PHP开发工程师 (已认证)

As a PHP Developer
推荐
实例初始化完成后,连接腾讯云Redis时,需要输入设置的密码。主从版和集群版的连接示例如下 主从版连接示例 主从版支持2种格式 • 格式1,“实例id:密码”的格式类型,例如您的实例id是crs-bkuza6i3,设置的密码是abcd1234,则连接命令如下 redis-cli ...... 展开详请

如何使用holer实现从外网访问本地WEB应用?

Dingda

Dingda · 站长 (已认证)

多一些不为什么的坚持
推荐
解压holer软件 获取holer access key信息: 在holer官网上申请专属的holer access key或者使用开源社区上公开的access key信息。 启动holer服务: Windows系统平台: 打开CMD窗口进入可执行程序所在的目录下,执行命令:...... 展开详请

所属标签

扫码关注云+社区