这种情况一直发生在我身上:
我可以使用不同的功能或设置强制emacs保存吗?
答案 0 :(得分:18)
围绕保存缓冲区包装一个函数,该函数标记首先修改的缓冲区:
(defun save-buffer-always ()
"Save the buffer even if it is not modified."
(interactive)
(set-buffer-modified-p t)
(save-buffer))
答案 1 :(得分:15)
您可以使用C-x C-w另存为。这应该无条件地保存。您也可以只键入一个空格,然后在其上退格。 Emacs很聪明地意识到,如果你撤消到目前为止所做的一切,缓冲区没有变化,但是如果你做了更改然后手动反转它们,它会认为缓冲区已被更改。
答案 2 :(得分:7)
您可以使用Emacs-Lisp函数未修改将当前缓冲区标记为已修改,前缀为arg,绑定到:
C-u M-~
如果您不直接调用新功能,上述答案将无效。 如果您想要无缝更改emacs保存行为。最好的解决方案是建立一个建议:
(defadvice save-buffer (before save-buffer-always activate)
"always save buffer"
(set-buffer-modified-p t))
答案 3 :(得分:0)
作为scottfrazer答案的略微替代品:
(defun my-save-buffer-always-sometimes (prefix)
"Save the buffer even if it is not modified."
(interactive "P")
(when prefix
(set-buffer-modified-p t))
(save-buffer))
这是您可以在需要前缀(C-u C-x C-s
)时强制它,否则不会不必要地更改文件。最后修改的时间戳是非常有用的(例如源代码控制),任意改变它似乎是一种耻辱。当然是YMMV。
答案 4 :(得分:0)
类似的问题让我在网上寻找解决方案。然后它打击我,我所要做的就是键入一个空格(或任何字符)并删除它,这将缓冲区标记为已更改。然后我可以正常输入C-x C-s。也许不复杂或先进,但它确实有效。