簡體   English   中英

如何在不訪問它的情況下將緩沖區保存在 Emacs 中?

[英]How can I save a buffer in Emacs without visiting it?

內置命令list-buffers創建一個名為*Buffer List*的緩沖區,可以使用C-x Cs將其保存到文件中。 有什么方法可以自動執行此操作,以便我可以輸入類似list-buffers-to-file的內容並自動創建 output 文件,而不必離開我正在使用的緩沖區?

當我執行list-buffers時,我正在使用的 window 被拆分,一個名為*Buffer List*的緩沖區出現在下方窗格中。 然后我必須C-x o移動到 *Buffer List* 緩沖區並保存它,然后C-x o回到我正在工作的緩沖區並鍵入C-x 1刪除另一個窗格。 我想避免拆分 window,實際上根本不需要查看*Buffer List*緩沖區,但我不知道該怎么做。 所有的緩沖區保存 elisp 命令似乎只在當前緩沖區上工作,這意味着必須離開我正在使用的緩沖區。似乎沒有像save-other-buffer buffer-name file-這樣的命令保存 有什么辦法可以做到這一點?

這應該做你想做的。

(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的代碼( Ch f list-buffers ,然后單擊文件名)。 該命令僅使用以下代碼定義:

(display-buffer (list-buffers-noselect arg))

所以你知道list-buffers-noselect必須返回一個緩沖區(這是display-buffer所需要的)。 Ch f list-buffers-noselect` 證實了這一點。

那么您只需要知道如何將給定緩沖區寫入給定文件即可。 write-file當前緩沖區寫入文件。 with-current-buffer使用給定的緩沖區電流進行處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM