3

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

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

(setq ido-buffer-history '())

并且生效了;我可以说,因为我用 . 查看了变量C-h v ido-buffer-history。但是,当我按下 时,更改并没有反映在 minibuffer 中C-x b

我还应该做什么?还有其他我应该清除的变量吗?

更新:我看到的“额外”缓冲区激活。有趣的是,C-x C-b( ido-fallback-command) 完全符合我的预期。这是我感兴趣的缓冲区历史记录。(有关更多上下文,请参阅buffer-name-historyido-buffer-history变量。)

注意:也许提到我正在使用已ido-ubiquitous安装的 emacs-starter-kit 会有所帮助。

4

3 回答 3

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提交。

于 2013-01-04T06:05:20.807 回答
5

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

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

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

于 2013-01-04T06:59:18.877 回答
1

我在 emacswiki 上找到了这个条目。

存储您所指的缓冲区历史记录的变量是buffer-name-history

如果您运行M-x describe-variable RET buffer-name-history RET,您将看到所有不再存在的死缓冲区。wiki 建议创建一个钩子,当你杀死一个缓冲区时,它会从列表中删除缓冲区名称。

我已经做了:M-x eval-expression RET (setq buffer-name-history '()) RET

这似乎奏效了。下次我运行 Cx b 时,我只循环通过我的真实缓冲区。

也就是说,将变量设置为 nil 似乎完全禁用了该功能(一旦我打开更多缓冲区,该变量似乎不会被重新填充)。

于 2015-10-08T21:58:11.727 回答