如何在Windows上禁用Emacs中的蜂鸣声

60

大家好,我是Emacs的新手,我在Windows机器上下载了GNU Emacs。我刚刚完成了简短的教程,但我发现每当我到达文件的开头/结尾以及许多其他情况时都会有蜂鸣声,这对我来说有点困扰。

我在网上搜到了一些人说要添加以下代码

(setq visible-bell 1)

我希望在我的 .emacs 文件中进行一些设置,但我不知道该如何操作。首先,我的 .emacs 文件在哪里?它是什么?还是有其他方法可以实现?我的意思是在 emacs 窗口菜单中有一个 选项 -> 自定义 Emacs,但我找不到设置所在的位置。我觉得在那里找东西有点困难,除非你已经知道在哪里。

3个回答

113

您有几个选项,其中一个选项不需要您知道文件在哪里;然而,在修改文件时,您几乎肯定会想要进行更改,因此让我们从那里开始。

首先,我的.emacs文件在哪里,它是什么?

对于该文件的名称,您还有一些选项。默认情况下,它是~/.emacs,但也可以是~/.emacs.el~/.emacs.d/init.el。(个人偏好后者,以便将所有与Emacs相关的文件都放在同一个.emacs.d目录下,但我们将使用默认设置,您随后可以将文件重命名。)

因此,首先检查是否存在现有文件。

C-hv user-init-file RET

默认情况下,它将显示以/.emacs结尾的文件路径(即使该文件不存在),但如果它以/.emacs.el/.emacs.d/init.el结尾,则意味着您已经有一个现有的init文件位于该位置。

用以下适当的方法加载该文件:

  • C-xC-f ~/.emacs RET
  • C-xC-f ~/.emacs.el RET
  • C-xC-f ~/.emacs.d/init.el RET

或者,您可以使用以下方法在不管它位于何处的情况下加载该文件:
M-: (find-file user-init-file) RET

然后,您只需将那行代码添加到文件中:

(setq visible-bell 1)

保存文件:

C-xC-s

下次启动Emacs时,它将使用该设置。

您还可以通过在右括号后面输入C-xC-e立即评估该设置。

既然您知道如何做到这一点,另一种方法是:

  • M-x customize-variable RET visible-bell RET
  • 单击“切换”按钮以打开该设置。
  • 单击“保存为将来的会话”按钮以将其保存到init文件中。

然后查看您的init文件,您将看到它已添加到(custom-set-variables ...)部分中。

至于您的.emacs文件,它是自动加载和评估的Emacs Lisp(elisp)代码的个人库,当您启动Emacs时。所有的Emacs配置和定制都是用这种语言编写的(事实上,编辑器自身的大部分也是如此)。

您可以在内置手册中阅读有关init文件和自定义Emacs的更多信息,方法是键入:

M-: (info "(emacs) Customization") RET
C-hig (emacs) Customization RET

您可能需要学习如何使用info阅读器。从*info*缓冲区,您可以键入h以启动其教程,键入d返回到顶层页面(其中有一些有用的注意事项)。

或者还有其他方法吗? 我的意思是,在emacs窗口菜单中有选项->自定义Emacs,但我找不到设置在哪里。

"特定选项" -> "visible-bell" 就是这个方法的答案。但请注意,并非所有内容都可以通过这些菜单获得,因此那不总是答案,许多人完全禁用了菜单栏,因为所有内容都可以在没有菜单栏的情况下访问。 (我更倾向于建议浏览菜单以发现某些人认为有用的选项,但要确保您不依赖它们。)

我觉得在菜单中找东西有点困难,除非你已经知道它在哪里。

这在一定程度上确实是正确的,但是Emacs的自我文档方面意味着即使您不知道在哪里查找,只要您知道如何查找,几乎总能找到。

诚然,即使在这样做上也有一定的学习曲线,但我建议尽快学习有关Emacs这方面的知识。以下是入门指南:

http://emacswiki.org/emacs/SelfDocumentation


7
非常详细的回答。非常感谢你。我学到了比我的问题所问的更多。至于.emacs文件的名称和位置,我的文件位于“c:/users/my_name/AppData/Roaming/.emacs”。我没有查看“~/AppData/Roaming/”,这就是我没有找到它的原因。再次感谢您的回答,帮助我开始使用emacs。 - LWZ
2
这是我在Emacs标签上看到的最好的之一。如果有任何Emacs新用户遇到这个答案,他/她会感到非常兴奋。非常感谢phils。 - kindahero
刚开始使用Emacs。非常感谢您的帮助!对于Emacs的新用户来说,visible-bell不再是您必须更改的唯一变量,但该页面确实会告诉您正确的位置:ring-bell-function - TurnipEntropy
有些Emacs会截断显示的值,因此您可能会看到类似于“user-init-file是在‘lread.c’中定义的变量。其值为“c:/users/m...”这并不是很有帮助。尝试使用M-: user-init-file RET来查看整个名称。 - Devon
@devon 如果Emacs将字符串缩写为文件名长度那么短,那么我认为某个地方的配置出了问题。当然,默认情况下不应该发生这种情况!我倾向于找出为什么会发生这种情况,因为这肯定会持续引起烦恼。 - phils

34

要完全关闭警报,请使用:

(setq ring-bell-function 'ignore)

在您的主文件夹中放置的.emacs文件中


在 .emacs 文件的哪里应该加入这行代码?在文件末尾吗? - usernumber
无所谓,但是我会把它放在文件末尾。 - makim

0
将以下行添加到您的.emacs.d/init.cl文件或任何其他启动文件中:
(set-message-beep 'silent)

有关此主题的更多信息,请查看命令C-h f后跟set-message-beep的帮助文档。
这个问题在Emacs W32 FAQ > Display Settings > Beep Sound中有解答。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接