我希望我的 .ejs 文件具有 html 语法,但是,它始终以纯文本形式打开文件。
在 Sublime 中,您可以选择“以当前扩展名打开所有内容...”,然后选择您的语法。
我看到你可以更改左下角的语法
如何使用特定语法打开特定类型的文件?
现在在 Atom 核心中,您不再需要该文件类型包。
在我工作的地方,我们使用 .phl 来表示某种 PHP 文件。要告诉 Atom 这一点,首先找到语言的范围名称(例如
text.html.php
),然后编辑 config.cson
,如下所示:
core:
customFileTypes:
"text.html.php": [
"phl"
]
themes: [
// snip
您可以在
~/.atom/config.cson
找到此文件,或者在“设置”窗口中单击“打开配置文件夹”按钮。
很容易出错,人们在 GitHub issues 上针对该功能犯下的许多错误就证明了这一点。
编辑:自从我写这个答案以来,这个功能已经添加到Atom核心中,请参阅这个答案了解详细信息。
(https://atom.io/packages/file-types)
它完全符合标题问题的要求:您可以通过简单编辑
config.cson
文件来为现有语言定义新的文件扩展名。
例如,如果您想使用 javascript 语法打开所有
.jsx
文件,您需要将其添加到您的 config.cson
"*":
core:
customFileTypes:
"source.js": [
"jsx"
]
这会将所有 .jsx 文件映射为使用 js 语法打开。
对于单个文件,您可以使用语法选择器; Ctrl+Shift+L 设置您在该文件上使用的语言。与自动检测不同,但在您使用不想为其设置默认值的文件时很有用。
如果您的语言确实只是 HTML,您可以设置一个简单的包来处理此问题。
创建一个名为
langugage-ejs
的包,在 grammars/ejs.cson
中,您可以将 HTML 包含为具有您关心的模式:
'fileTypes': [
'ejs'
]
'name': 'Embedded JavaScript'
'patterns': [
{
'include': 'source.html'
}
]
'scopeName': 'source.ejs'
language-ipynb 当然是通过扩展 JSON 来实现这一点的。
但实际上,您希望编辑器能够识别 HTML 之上的模板标签。我能找到的最好的例子是 erb(嵌入式 Ruby 模板)。它源自 HTML,但也添加了其他标签,如以下代码段所示:
...
'patterns': [
{
'begin': '<%+#'
'captures':
'0':
'name': 'punctuation.definition.comment.erb'
'end': '%>'
'name': 'comment.block.erb'
}
{
'begin': '<%+(?!>)[-=]?'
'captures':
'0':
'name': 'punctuation.section.embedded.ruby'
'end': '-?%>'
'name': 'source.ruby.rails.embedded.html'
'patterns': [
{
'captures':
'1':
'name': 'punctuation.definition.comment.ruby'
'match': '(#).*?(?=-?%>)'
'name': 'comment.line.number-sign.ruby'
}
{
'include': 'source.ruby.rails'
}
]
}
{
'include': 'text.html.basic'
}
]
...
看起来已经为此发布了一个全新的软件包。 https://atom.io/packages/language-ejs。
正如戴夫·安德森(Dave Andersen)在隐藏评论中提到的那样,现在可以在没有任何额外软件包的情况下执行此操作,并且已记录在here。