2013-01-04 94 views
3

當我按C-x bido-switch-buffer)時,我得到很多我不想看到的緩衝區。我想清除緩衝區歷史記錄。如何清除Emacs緩衝區歷史記錄?

我嘗試(使用M-x eval-buffer)評估該表達式:

(setq ido-buffer-history '()) 

它生效;我可以說,因爲我看着C-h v ido-buffer-history的變量。但是,當我按C-x b時,變化未反映在小緩衝區中。

我該怎麼辦?我應該清除其他變數嗎?

UPDATE:那我看到的 '額外' 緩衝區活躍。有趣的是,C-x C-bido-fallback-command)顯示了我所期望的。這是我很感興趣的緩衝歷史(見buffer-name-historyido-buffer-history變量更多的上下文。)

注:也許它會幫助提一提,我使用emacs的起動傑其中有ido-ubiquitous安裝。

回答

4

以下內容添加到您的init.el:(setq ido-use-virtual-buffers nil)


爲後人:

這些都是在會話中的所有活動緩衝區。你可以用下面的命令清除它們:

  • M-x clean-buffer-list將關閉你沒有在使用了一段時間
  • M-x kill-some-buffers將訪問每個緩衝區,並詢問是否要關閉它
  • M-x kill-matching-buffers任何干淨緩衝區會提示輸入正則表達式在緩衝名字,你可以留空

編輯: 還有你C-x C-b得到無聊的老buffer菜單。在此菜單中,您可以保留d,直到它將每個緩衝區標記爲刪除,然後按x提交。

+0

'M-x clean-buffer-list'沒有爲我做。 'C-x b'仍然顯示未打開的緩衝區,例如'ido-ubiquitous-autoloads.el'。 –

+0

好的,還有其他一些可以使用的命令,請參閱更新後的答案。 –

+0

您的回答給出了關於如何關閉緩衝區的各種建議,但這不是我所需要的。所有(或幾乎所有)我所有的緩衝區都關閉。我的緩衝區名稱歷史記錄包含未打開的緩衝區 - 這是此處的問題。 –

5

感謝Chris,我瞭解了ido的虛擬緩衝區。我不想完全禁用ido-use-virtual-buffers。我想根據需要清除歷史;這些命令實現這一目標:(注意,清除ido-virtual-buffers是不夠的 - recentf-list也必須清零)

(setq ido-virtual-buffers '()) 
(setq recentf-list '()) 

1

我發現emacswiki this條目。

存儲你是指緩衝區歷史buffer-name-history

如果運行M-x describe-variable RET buffer-name-history RET你會看到所有的不再是真正存在的死緩衝區的變量。wiki建議創建一個鉤子,每當你終止一個緩衝區時,就從列表中刪除緩衝區名稱。

我只是做:M-x eval-expression RET (setq buffer-name-history '()) RET

這似乎已經奏效。下一次我運行C-x b時,我只循環了我的實際緩衝區。

也就是說,將變量設置爲nil似乎會完全禁用該功能(一旦打開更多緩衝區,變量似乎不會重新填充)。