如何不保存文件中的更改(以及临时缓冲区!)?

Posted

技术标签:

【中文标题】如何不保存文件中的更改(以及临时缓冲区!)?【英文标题】:How to not save changes in file (And in temp buffer too!)? 【发布时间】:2012-04-06 08:59:39 【问题描述】:

一定是个愚蠢的问题,但在使用 Emacs 有一段时间了,我不知道如何才能不应用我的更改...

当我退出 C x C c 它告诉我:

输入 SPC 或 `y' 保存当前缓冲区; DEL 或 `n' 跳过当前缓冲区; RET 或 `q' 放弃保存(跳过所有剩余的缓冲区); C-g 退出(取消整个命令); !保存所有剩余的缓冲区; C-r 查看此缓冲区; d 查看此缓冲区中的更改; 或 . (句点)保存当前缓冲区并退出。

所以这里有一些不保存更改的机会:n 或 q 但总有当前阶段的保存缓冲区:(

我的意思是,例如,当我通过在其中添加随机文本来破坏某些文件并且我不想保存更改我想在下次未保存(未破坏)文件时开始编辑但 Emacs 总是打开保存的缓冲区:(如何解决?

【问题讨论】:

如果按 n 则不会保存。 是的,但请阅读,在我再次对该文件进行 emacs 处理后,它会打开已编辑的临时缓冲区。 默认情况下不应该这样做,除非你安装了一些可以做到这一点的包。如果您按 n,开箱即用的 emacs 会丢弃您的更改。 这里是 .emacs:github.com/nCdy/Ruto/blob/master/.emacs 运行 emacs -Q 以验证默认行为是什么,而不评估任何配置文件。运行 emacs -q 将加载站点范围的文件,但不会加载您的个人配置。这应该可以让您将范围缩小到站点配置或您自己的配置,然后您就会知道从哪里开始查找。 【参考方案1】:

您对问题的措辞非常混乱。我想你想添加 恢复到提供的选项列表?此代码添加 , 用于恢复 和 % 将缓冲区标记为未修改:

(when (boundp 'save-some-buffers-action-alist)
  (setq save-some-buffers-action-alist
        (cons
         (list
          ?%
          #'(lambda (buf)
              (with-current-buffer buf
                (set-buffer-modified-p nil))
              nil)
          "mark buffer unmodified.")
         (cons
          (list
           ?, 
           #'(lambda (buf)
               (with-current-buffer buf
                 (revert-buffer t))
               nil)
           "revert buffer.")
          save-some-buffers-action-alist))))

【讨论】:

以上是关于如何不保存文件中的更改(以及临时缓冲区!)?的主要内容,如果未能解决你的问题,请参考以下文章

vim的保存文件和退出命令

如何访问 Visual Studio 中的保存临时选项?

如何保存帧缓冲区然后将其取回

sed

如何获取保存在临时目录中的视频的 url

如何将列表保存到临时目录中的泡菜文件并将该文件传递给函数?