Emacs 在缓冲区中访问文件。编辑会先改变缓冲区,保存则把当前内容写入关联路径。请阅读迷你缓冲区消息,因为权限、磁盘上的冲突更改或其他错误都可能阻止写入。
高级文本操作 · 第 10 课
Emacs 文件操作
学习如何在 Emacs 中访问、保存、重命名、重新载入和审查由文件支持的缓冲区。
访问文件
使用运行 find-file 的 C-x C-f,然后在迷你缓冲区中输入路径并按 Enter:
C-x C-f
Emacs 会在缓冲区中打开已有的可读文件;如果路径不存在,则准备一个访问新文件的缓冲区。对于后一种情况,只有成功保存后磁盘文件才会存在。
输入路径时可以使用 Tab 补全。访问目录通常会打开 Emacs 的目录编辑器 Dired,而不会把目录当作文本文件。
哪个 Emacs 按键序列会提示输入路径并访问它?
使用 C-x C-f 访问不存在的路径时,通常何时创建磁盘文件?
保存当前缓冲区
使用运行 save-buffer 的 C-x C-s 保存当前访问文件的缓冲区:
C-x C-s
如果缓冲区没有关联文件名,Emacs 会提示输入一个。成功写入会清除缓冲区的已修改标记;失败则会在缓冲区中保留未保存数据并报告错误。
哪个按键序列会保存当前访问文件的缓冲区?
使用其他名称写入
使用运行 write-file 的 C-x C-w,可以提示输入路径、把缓冲区写入该处,并让缓冲区改为访问这个新文件:
C-x C-w
这就是 Emacs 的“另存为”行为。它与只写出一份副本、但继续访问原路径不同。
哪个按键序列会对当前缓冲区执行通常的“另存为”操作?
审查多个已修改缓冲区
使用运行 save-some-buffers 的 C-x s 检查已修改且访问文件的缓冲区:
C-x s
Emacs 通常会询问是否保存每个符合条件的已修改缓冲区。请阅读缓冲区名称并谨慎回答;这不是无条件的全部保存快捷键。
C-x s 通常会做什么?
从磁盘恢复
如果文件已在磁盘上改变,而你有意想丢弃缓冲区当前内容,请运行 M-x revert-buffer 并审查确认提示。恢复可能破坏未保存的缓冲区编辑,所以只有在确认应以哪一方为准后才使用。
决定前可以另存副本,或使用版本控制和 diff 工具比较。如果缓冲区已修改,不要把重新加载操作当成无害操作。
课程已完成
你已完成 Emacs 文件操作
现在,你可以管理文件支持的缓冲区,而不会混淆访问与写入。
使用
C-x C-f访问路径。只有保存缓冲区时才创建缺失文件。
使用
C-x C-s保存当前缓冲区。使用
C-x C-w以新的访问名称保存。使用
C-x s审查多个已修改缓冲区。