当我按C-x b
(ido-switch-buffer
)时,我得到了很多我不想看到的缓冲区。我想清除缓冲区历史记录。
我尝试评估此表达式(使用M-x eval-buffer
):
(setq ido-buffer-history '())
它生效了;我可以说,因为我用C-h v ido-buffer-history
查看了变量。但是,当我按C-x b
时,这一变化并没有反映在迷你缓冲区中。
我还应该怎么办?还有其他变量我应该清除吗?
UPDATE :我看到的“额外”缓冲区不处于活动状态。有趣的是,C-x C-b
(ido-fallback-command
)正好显示了我的期望。这是我感兴趣的缓冲区历史记录。(有关更多上下文,请参阅buffer-name-history
和ido-buffer-history
变量。)
注意:也许有必要提一下我正在使用安装了ido-ubiquitous
的emacs-starter-kit。
答案 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似乎完全禁用了该功能(一旦打开更多缓冲区,变量似乎不会被重新填充)。