4

我最近不得不revert-buffer多次运行该命令,每当 emacs 提示此消息时,我都非常沮丧地说“Revert buffer from file abc.txt? (yes or no)” 。

在这种情况下,是否有自动说的?

4

6 回答 6

6

如果它只是用于交互式使用,我会定义一个替代函数:

(defun my-revert-buffer-noconfirm ()
  "Call `revert-buffer' with the NOCONFIRM argument set."
  (interactive)
  (revert-buffer nil t))

或者,正如revert-buffer文档字符串告诉您的那样,查看revert-without-query变量,以防这对您来说是一个更好的解决方案。

于 2013-10-05T06:18:31.983 回答
3

在相关的旁注中,许多人在他们的以下行.emacs中将仅通过一次按键(只是yn)进行确认:

(defalias 'yes-or-no-p 'y-or-n-p)
于 2013-10-05T10:48:53.273 回答
2

我使用这个,类似于@phils 提出的,但使用非nil IGNORE-AUTOarg:

(defun revert-buffer-no-confirm ()
  "Revert buffer without confirmation."
  (interactive) (revert-buffer t t))

我将它绑定到<f5>,因为这就是该键通常在 MS Windows 中所做的事情。

无论如何,我(强烈)同意那些建议为此定义单独命令的人。revert-without-query除非您非常确定某些文件(总是)等,否则我不会打扰。最好让revert-buffer继续正常运行,并提供(并可能绑定)您自己的命令以供交互式使用。最清楚何时不被确认提示所困扰。

于 2013-10-05T14:54:04.200 回答
0

定制revert-without-query可能是一种选择。

于 2013-10-05T13:18:53.790 回答
0

正如其他答案所指出的那样,虽然它更喜欢重新定义函数或键绑定,但可以使用revert-buffer以下方法自动回复“是”到任何函数yes-or-no-p或就此而言y-or-n-p

(defalias 'yes-or-no-p '(lambda (a &rest b) t))

这可能对您的数据具有很大的破坏性,因此请自行决定使用。

于 2017-09-20T15:58:50.550 回答
0

我使用以下命令将所有“是/否”确认转换为“是/否”确认,并且对于某些提示默认为“是”。我根据需要将提示添加到 default-yes-sometimes。请注意,我不必列出整个提示,只需一个与其匹配的正则表达式。

(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)
于 2020-10-01T20:12:50.153 回答