如何删除 Emacs 缓冲区上的文件修改跟踪?

如何删除 Emacs 缓冲区上的文件修改跟踪?

*shell*在 Emacs 中有一个缓冲区,我可以从中获得 Linux 命令行 shell 界面。有时,我希望将缓冲区的内容保存到磁盘,以便在会话退出时供将来参考,一旦完成此操作,一旦该*会话中发生进一步的 shell 交互,Emacs 就会在缓冲区名称前用 标记该缓冲区已修改,此外,当要编译文件时,系统会询问我是否在继续编译之前保存缓冲区,因为它们显示为未保存的更改,可能会影响编译。

我的问题是,Emacs 中是否有某种方法可以将缓冲区与磁盘上的文件分离,或者以某种方式将其标记为从未修改,以便我不会收到标记*并且在编译时不会收到未保存的更改的通知?

答案1

解决方案很简单:在该 shell 缓冲区中输入:

(setq buffer-file-name nil)

然后将光标放在右括号的右侧,执行C-x C-eM-x eval-last-sexp。然后你就可以删除表达式了。

伙计!这些人的态度是“好吧,不要这样做。”当我正在查看框架中另一个缓冲区中的文件并想通过保存来重命名它时,我总是会发生这种情况,但我忘了光标在我的 shell 缓冲区中。

答案2

不要让缓冲区访问文件。只需使用命令write-region(而不是write-file访问文件的命令)将其部分或所有内容保存到文件中即可。请参阅文档write-regionC-h f write-region

答案3

在想要删除修改标志的缓冲区中,按以下方式在迷你缓冲区中计算以下表达式M-:

(set-buffer-modified-p nil)

这应该切换缓冲区的修改标志。

相关内容