如何自动为一组特定的文件扩展名加载模式?


18

我想yaml-mode为名为*.yml或的任何文件加载*.yaml


7
阅读Elisp手册,节点Auto Major Mode,您将能够回答自己的问题:auto-mode-alist哦,在您发布问题10秒钟后,我看到您这样做了。以这种方式从手册中抽出问答环节可能不是一个好主意。但是我想这将是一个人们会遇到的问题,答案将对他们有所帮助。不幸的是,他们将以这种方式学习它,而不是从Emacs本身学习。更好地教人们如何找到这样的答案。
2014年

1
随时将其添加为答案。我问这个问题是因为它是我过去解决的一个问题,它与area51清单中提出的问题非常相似。
b4hand 2014年

1
没问题。对不起,如果我听起来很消极。正如我说的,问题和答案将对人们有所帮助。
2014年

就其价值而言,这与在区域51
b4hand 2014年

提出这样的问题没有错。我的评论原本只是第一句话。IMO,对人们来说,养成先询问Emacs本身,再询问SE的习惯是一件好事。Emacs在帮助用户方面有点特殊-这不是您的一般SE主题。但是用户经常需要帮助来学习如何询问 Emacs。
2014年

Answers:


16

将这些行添加到您的.emacs文件中:

(require 'yaml-mode)
(add-to-list 'auto-mode-alist '("\\.ya?ml\\'" . yaml-mode))

auto-mode-alist是emacs每当打开新文件时都会查询的变量。您可以在文件名模式和主模式之间添加映射。

您可以从Emacs手册中找到有关Emacs如何确定给定缓冲区加载哪些模式的更多信息。


4
“ \\。ya?ml \\'”是首选格式,因为它实际上是字符串的结尾,而不是换行符。实际上,对于名称中包含换行符的文件,这确实有所不同...'foo.yaml \ nc'实际上应该是C文件,而不是yaml文件(是的,这几乎不可能发生,但仍然可以)
Sigma

2
如果您还链接到给出此信息的emacs手册,将很有帮助。
跋涉2014年

另外,(require 'yaml-mode)如果模式被自动加载是不必要的(几乎总是如此)。当您打开带有正确文件扩展名的文件时,该库将自动加载。
shosti 2014年

由于yaml-mode是作为软件包安装的,因此我绝对需要(require 'yaml-mode)生产线。否则,我会看到以下错误:File mode specification error: (void-function yaml-mode)
b4hand 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.