比如我在dired使用!执行命令,会生成一个async-command-output,有没有办法自动删除它
怎么来定义一个函数,先查询当前buffer-list如果存在相匹配的buffer name,就用kill-buffer删除,还有如何让它智能的运行,因为这些buffer没有任何输出,完全感觉就是多余的
比如我在dired使用!执行命令,会生成一个async-command-output,有没有办法自动删除它
怎么来定义一个函数,先查询当前buffer-list如果存在相匹配的buffer name,就用kill-buffer删除,还有如何让它智能的运行,因为这些buffer没有任何输出,完全感觉就是多余的
Okay,谢谢推荐,我晚上回去试试看
不会用这个插件,可能要求不一样
我目前用
(kill-buffer "shell command output)这种,但是要如何自动在buffer-list里面去搜索有没有这个buffer
想了另一个思路,类似于awesome-tab,centuar-tab的屏蔽功能,但是我用这两个都有一些小问题,有没有大神推荐一下emacs27.1自带的tab-bar-mode实现这样的功能
可以参考这个demo,改造一下:
(defun kill-some-buffers ()
"Kill some buffer"
(mapcar
(lambda (buffer)
(if (string-prefix-p "*Shell Command Output" (buffer-name buffer))
(with-current-buffer buffer
(when (buffer-live-p buffer)
(if (or buffer-offer-save
(and buffer-file-name (buffer-modified-p)))
(message "buffer modified"))
(let ((name (buffer-name buffer)))
(message "kill buffer %s" name)
(kill-buffer buffer))))))
(buffer-list)))
(run-at-time 5 15 'kill-some-buffers)
你需要 midnight-mode
其实不需要kill这些buffer,不关联文件、不跑shell的buffer基本不会占用任何资源,唯一的问题可能是在filter buffer的时候带来一点点干扰(还要它的名字和你想找的buffer相似),等emacs卡死/闪退、系统重启而再启动Emacs之后,这些buffer根本就和没存在过一样(不像和文件关联的buffer可以通过desktop恢复)
我一般在*ibuffer*
看一下,打开的buffer总数达到多少了,如果还是两位数,80以下基本就不会管,达到80+总有种emacs随时会崩的感觉(可能是心理作用),这时就在*ibuffer*
里结束一些,
似乎可以写一个定时器定时检查buffer的总数达到了某一数值,弹出提醒,这样就不用老去*ibuffer*
里面看了
倒不是说占用资源,只是感觉没有任何输出的buffer到底有什么存在意义,对我来说,不管是message, warning, backtrace这些都有它们的功能,但是shell command output这种完全感觉就是一个摆设
我没有那么夸张,顶多20已经很了不起了
经常把不用的关掉,20也差不多了,只是一直在打开而不关,那还是很快就上去了
差不多就是这样,习惯都是把编辑好的关掉,应该没有谁只打开不关闭吧