Answers:
只需选择整个缓冲区(C-x h)并使用即可write-region
。
C-x h
M-x write-region
M-x write-region
命令。
肮脏的elisp
做我想做的事:
(defun tv/copy-buffer-to-file (filename)
(interactive "sFile to write? ")
(let ((bufname (buffer-name)))
(set-visited-file-name filename)
(save-buffer)
(set-visited-file-name nil)
(rename-buffer bufname)))
这看起来比需要的麻烦多了,因为我们必须照顾被访问的文件和缓冲区名称,并且不能确定我们不会忘记其他任何东西。
其他解决方案包括将缓冲区文本复制到新缓冲区中,然后保存并杀死该缓冲区可能会更好,但是我会担心大型缓冲区的性能问题。
write-region
从Lisp 使用(例如,在自己的命令中),则无需选择缓冲区文本。只需将它(point-min)
和和(point-max)
文件名一起传递即可。