如何在不访问缓冲区的情况下在 Emacs 中保存缓冲区?
How can I save a buffer in Emacs without visiting it?
内置命令 list-buffers 创建一个名为 *Buffer List* 的缓冲区,可以使用 C-x C-s。有什么方法可以自动执行此操作,以便我可以输入 list-buffers-to-file 之类的内容并自动创建输出文件,而不必离开我正在使用的缓冲区?
当我执行 list-buffers 时,我正在工作的 window 被拆分,一个名为 *Buffer List*[= 的缓冲区27=] 出现在下部窗格中。然后我必须 C-x o 移动到 *Buffer List* 缓冲区并保存它,然后 C-x o 回到我正在工作的缓冲区并键入 C-x 1 以删除另一个窗格。我想避免拆分 window,实际上根本不需要查看 *Buffer List* 缓冲区,但我不知道该怎么做.所有的缓冲区保存 elisp 命令似乎只在当前缓冲区上工作,这意味着必须离开我正在工作的缓冲区。似乎没有像 save-other-buffer 这样的命令 缓冲区名称 要保存的文件。有什么办法可以做到这一点吗?
这应该可以满足您的要求。
(defun save-buf-list (&optional arg)
"Write `list-buffers' output to file `~/somewhere/my-buflist.txt'.
A prefix arg is handled as in `list-buffers'."
(interactive "P")
(with-current-buffer (list-buffers-noselect arg)
(write-file "~/somewhere/my-buflist.txt")))
如果您希望能够将缓冲区写入不同的文件,您可以为 FILE
添加一个 arg 并首先提示它。
要自己查找,请检查定义 list-buffers
的代码(C-h f list-buffers
,然后单击文件名)。该命令仅使用以下代码定义:
(display-buffer (list-buffers-noselect arg))
所以你知道 list-buffers-noselect
必须 return 一个缓冲区(这正是 display-buffer
所需要的)。 C-h f
list-buffers-noselect` 证实了这一点。
那么您只需要知道如何将给定缓冲区写入给定文件即可。 write-file
将 当前 缓冲区写入文件。宏 with-current-buffer
使用给定的缓冲区电流进行操作。
内置命令 list-buffers 创建一个名为 *Buffer List* 的缓冲区,可以使用 C-x C-s。有什么方法可以自动执行此操作,以便我可以输入 list-buffers-to-file 之类的内容并自动创建输出文件,而不必离开我正在使用的缓冲区?
当我执行 list-buffers 时,我正在工作的 window 被拆分,一个名为 *Buffer List*[= 的缓冲区27=] 出现在下部窗格中。然后我必须 C-x o 移动到 *Buffer List* 缓冲区并保存它,然后 C-x o 回到我正在工作的缓冲区并键入 C-x 1 以删除另一个窗格。我想避免拆分 window,实际上根本不需要查看 *Buffer List* 缓冲区,但我不知道该怎么做.所有的缓冲区保存 elisp 命令似乎只在当前缓冲区上工作,这意味着必须离开我正在工作的缓冲区。似乎没有像 save-other-buffer 这样的命令 缓冲区名称 要保存的文件。有什么办法可以做到这一点吗?
这应该可以满足您的要求。
(defun save-buf-list (&optional arg)
"Write `list-buffers' output to file `~/somewhere/my-buflist.txt'.
A prefix arg is handled as in `list-buffers'."
(interactive "P")
(with-current-buffer (list-buffers-noselect arg)
(write-file "~/somewhere/my-buflist.txt")))
如果您希望能够将缓冲区写入不同的文件,您可以为 FILE
添加一个 arg 并首先提示它。
要自己查找,请检查定义 list-buffers
的代码(C-h f list-buffers
,然后单击文件名)。该命令仅使用以下代码定义:
(display-buffer (list-buffers-noselect arg))
所以你知道 list-buffers-noselect
必须 return 一个缓冲区(这正是 display-buffer
所需要的)。 C-h f
list-buffers-noselect` 证实了这一点。
那么您只需要知道如何将给定缓冲区写入给定文件即可。 write-file
将 当前 缓冲区写入文件。宏 with-current-buffer
使用给定的缓冲区电流进行操作。