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

时间:2013-01-04 05:50:13

标签: emacs

当我按C-x bido-switch-buffer)时,我得到了很多我不想看到的缓冲区。我想清除缓冲区历史记录。

我尝试评估此表达式(使用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变量。)

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

3 个答案:

答案 0 :(得分: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进行提交。

答案 1 :(得分:5)

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

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

(请注意,清除ido-virtual-buffers还不够 - recentf-list也必须清除。)

答案 2 :(得分: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似乎完全禁用了该功能(一旦打开更多缓冲区,变量似乎不会被重新填充)。