如何清除Emacs缓冲区历史记录?

Dav*_* J. 3 emacs

当我按C-x b(ido-switch-buffer)时,我得到了许多我不想看到的缓冲区.我想清除缓冲区历史记录.

我试过评估这个表达式(使用M-x eval-buffer):

(setq ido-buffer-history '())
Run Code Online (Sandbox Code Playgroud)

它生效了; 我可以说,因为我看了变量C-h v ido-buffer-history.但是,当我按下时,这个改变没有反映在迷你缓冲器中C-x b.

我还该怎么办?还有其他变量我应该清算吗?

更新:我看到的'额外'缓冲区活跃.有趣的是,C-x C-b(ido-fallback-command)显示了我的期望.这是我感兴趣的缓冲区历史记录.(有关更多上下文,请参阅buffer-name-historyido-buffer-history变量.)

注意:也许有必要提一下我正在使用已ido-ubiquitous安装的emacs-starter-kit .

Chr*_*ett 5

将以下内容添加到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.在此菜单中,您可以按住,d直到它标记每个缓冲区以进行删除,然后按x提交.


Dav*_* J. 5

感谢Chris,我了解了ido的虚拟缓冲区.我不想ido-use-virtual-buffers完全禁用.我想根据需要清除历史; 这些命令实现了这个目标:

(setq ido-virtual-buffers '())
(setq recentf-list '())
Run Code Online (Sandbox Code Playgroud)

(请注意,清算ido-virtual-buffers不充分 - recentf-list也必须清除.)