比如关闭一个终端buffer时,会有如下提示出现在minibuffer中:
Buffer "*terminal*" has a running process; kill it? (y or n)
现在想要写一个函数,关掉*terminal* buffer并且回答y给minibuffer。
记得山人的视频中好像提到过一个解决这样问题的方案,昨天找了一大会儿都没找到,求助!
比如关闭一个终端buffer时,会有如下提示出现在minibuffer中:
Buffer "*terminal*" has a running process; kill it? (y or n)
现在想要写一个函数,关掉*terminal* buffer并且回答y给minibuffer。
记得山人的视频中好像提到过一个解决这样问题的方案,昨天找了一大会儿都没找到,求助!
keyboard macro
我的问题是 如何使用elisp回答minibuffer中的y or n? 在标题中。 我的需求是 想要写一个函数,关掉terminal buffer并且回答y给minibuffer。 在内容中。
你依旧没有表述清楚你想要的是什么,像下面的表述就比较清楚:
如何直接关闭运行着 Process 的 Buffer 而不经过确认?比如
*terminal*
,每次都要输入yes
比较烦人。
或着更具体:
每次关闭
*terminal*
都要输入y
确认,能不能直接关闭而不经过确认?
之所以建议你说实际的需求,是因为你以为的解决方法不见得对,且常常会误导其他试图回答问题的人。如果你没听说过 XY 问题概念的话,可以了解下,会对你提问有帮助。
The XY problem is asking about your attempted solution rather than your actual problem
感谢你的建议,看了之后受益不少。
我的问题描述 可能进入到了解决方法细节的层面,而没有问到作为一个问题的关键点所在。
我参考2楼的建议,录制了一段kbd macro,已经解决了这个问题:
(fset 'my/close-buffer-with-auto-prompt
(lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ("\355bdy\355wd" 0 "%d")) arg)))
感谢各位。
关闭 Buffer 时运行的 Hook 是 kill-buffer-query-functions
,你遇到的是默认的行为,你可以根据你的需求改变这个 Hook。假设你就是想不确认而直接关闭(这可能不是个好主意):
(remove-hook 'kill-buffer-query-functions #'process-kill-buffer-query-function)