內置命令list-buffers創建一個名為*Buffer List*的緩沖區,可以使用Cx Cs將其保存到檔案中。是否有某種方法可以自動執行此操作,以便我可以輸入類似list-buffers-to-file 的內容并自動創建輸出檔案,而不必離開我正在作業的緩沖區?
當我執行list-buffers時,我正在使用的視窗被拆分,一個名為*Buffer List*的緩沖區出現在??下部窗格中。然后我必須Cx o移動到 *Buffer List* 緩沖區并保存它,然后Cx o回到我正在作業的緩沖區并鍵入Cx 1以洗掉另一個窗格。我想避免拆分視窗,實際上根本不需要查看*Buffer List*緩沖區,但我不知道該怎么做。所有的緩沖區保存 elisp 命令似乎只適用于當前緩沖區,這意味著必須離開我正在作業的緩沖區。似乎沒有像save-other-buffer buffer-name這樣的命令 檔案保存。有沒有辦法做到這一點?
uj5u.com熱心網友回復:
這應該做你想要的。
(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")))
如果您希望能夠將緩沖區寫入不同的檔案,您可以為 the 添加一個 argFILE并首先提示它。
要自己找到它,請檢查代碼定義list-buffers( C-h f list-buffers,然后單擊檔案名)。該命令僅使用以下代碼定義:
(display-buffer (list-buffers-noselect arg))
所以你知道list-buffers-noselect必須回傳一個緩沖區(這是display-buffer需要的)。而C-h f list-buffers-noselect` 證實了這一點。
那么您需要知道的就是如何將給定的緩沖區寫入給定的檔案。 write-file將當前緩沖區寫入檔案。宏with-current-buffer用給定的緩沖電流做事。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/442940.html
上一篇:如何通過函式回傳檔案下載?
