即使它认为(如果不需要保存更改),如何强制Emacs保存

sli*_*cki 16 emacs save

这种情况一直发生在我身上:

  • 我在emacs中打开了一个文件,
  • 我保存它('save-buffer),
  • 磁盘上的文件更改(或删除,移动等)
  • 但我想要它回来,所以我尝试再次保存在emacs('save-buffer)而不是保存它说"(不需要保存更改)"并且什么都不做.

是否有不同的功能或设置可用于强制emacs保存?

sco*_*zer 18

在save-buffer周围包装一个函数,用于标记首先修改的缓冲区:

(defun save-buffer-always ()
  "Save the buffer even if it is not modified."
  (interactive)
  (set-buffer-modified-p t)
  (save-buffer))
Run Code Online (Sandbox Code Playgroud)


Tag*_*ith 15

您可以使用Cx Cw另存为.这应该无条件地保存.您也可以只键入一个空格,然后在其上退格.Emacs很聪明地意识到,如果你撤消到目前为止你所做的一切,缓冲区没有变化,但是如果你进行了更改然后手动反转它们,它会认为缓冲区已被更改.

  • @sligocki:我发现只要在文件名提示符下按<enter>而不输入任何内容,Emacs就会重新使用现有的文件名. (3认同)

Jür*_*zel 8

您可以使用使用前缀arg 修改的Emacs-Lisp函数将当前缓冲区标记为已修改,并绑定到:

C-u M-~
Run Code Online (Sandbox Code Playgroud)

如果您不直接调用新函数,上面的答案将不起作用.如果您想要无缝更改emacs保存行为.最好的解决方案是建立一个建议:

(defadvice save-buffer (before save-buffer-always activate)
  "always save buffer"
  (set-buffer-modified-p t))
Run Code Online (Sandbox Code Playgroud)