我最近不得不多次运行命令revert-buffer
,并且只要emacs提示此消息Revert buffer from file abc.txt? (yes or no)
,就非常沮丧地说是。
在这种情况下,无论如何自动说是吗?
答案 0 :(得分:6)
如果只是为了交互式使用,我会定义一个替代功能:
(defun my-revert-buffer-noconfirm ()
"Call `revert-buffer' with the NOCONFIRM argument set."
(interactive)
(revert-buffer nil t))
或者,正如revert-buffer
文档字符串告诉您的那样,请查看revert-without-query
变量,以防对您有更好的解决方案。
答案 1 :(得分:3)
在相关的旁注中,很多人在他们的.emacs
中都有以下行,这些行只会确认一个按键(只有 y 或 n ) :
(defalias 'yes-or-no-p 'y-or-n-p)
答案 2 :(得分:2)
我使用此功能,类似于what @phils proposed,但使用非nil
IGNORE-AUTO
arg:
(defun revert-buffer-no-confirm ()
"Revert buffer without confirmation."
(interactive) (revert-buffer t t))
然后我将它绑定到<f5>
,因为在MS Windows中,这通常就是那个键。
无论如何,我(强烈)同意那些建议为此定义单独命令的人。我不会打扰revert-without-query
,除非你非常确定某些文件(总是)等。最好让revert-buffer
继续行动通常,并提供(也许绑定)您自己的命令以进行交互式使用。 您最清楚何时不被确认提示打扰。
答案 3 :(得分:0)
自定义revert-without-query
可能是一种选择。
答案 4 :(得分:0)
虽然正如其他答案所指出的那样,更喜欢重新定义revert-buffer
函数或键绑定,但可以使用任何函数自动回复“是” yes-or-no-p
或y-or-n-p
通过以下内容{<1}}:
(defalias 'yes-or-no-p '(lambda (a &rest b) t))
这可能会对您的数据造成极大的破坏,因此请自行决定使用。
答案 5 :(得分:0)
我使用以下方法将所有“是/否”确认都转化为“是/否”确认, 对于某些提示,默认为是。我有时会根据需要将提示添加到default-yes-。请注意,我不必列出整个提示,只需列出与其匹配的正则表达式即可。
(setq original-y-or-n-p 'y-or-n-p)
(defalias 'original-y-or-n-p (symbol-function 'y-or-n-p))
(defun default-yes-sometimes (prompt)
(if (or
(string-match "has a running process" prompt)
(string-match "does not exist; create" prompt)
(string-match "modified; kill anyway" prompt)
(string-match "Delete buffer using" prompt)
(string-match "Kill buffer of" prompt)
(string-match "Kill Dired buffer of" prompt)
(string-match "delete buffer using" prompt))
t
(original-y-or-n-p prompt)))
(defalias 'yes-or-no-p 'default-yes-sometimes)
(defalias 'y-or-n-p 'default-yes-sometimes)