我希望我的 .ejs 文件具有 html 语法,但是,它总是以纯文本形式打开文件。
在 sublime 中,您可以选择“以当前扩展名打开所有...”,然后选择您的语法。
我看到您可以更改左下角的语法
如何使用特定语法打开特定类型的文件?
我希望我的 .ejs 文件具有 html 语法,但是,它总是以纯文本形式打开文件。
在 sublime 中,您可以选择“以当前扩展名打开所有...”,然后选择您的语法。
我看到您可以更改左下角的语法
如何使用特定语法打开特定类型的文件?
这现在在 Atom core中,你不再需要那个 file-types 包了。
在我工作的地方,我们将 .phl 用于某种 PHP 文件。要告诉 Atom,首先找到语言的 Scope Name(例如text.html.php
),然后config.cson
像这样编辑:
core:
customFileTypes:
"text.html.php": [
"phl"
]
themes: [
// snip
您可以在 中找到此文件~/.atom/config.cson
,或从“设置”窗口单击“打开配置文件夹”按钮。
很容易出错,正如人们在GitHub 问题上为该功能所犯的许多错误所证明的那样。
编辑:自从我写这个答案以来,这个功能已经被添加到 Atom 核心中,有关详细信息,请参阅这个答案。
( https://atom.io/packages/file-types )
它完全符合标题问题的要求:您可以通过简单编辑文件来为现有语言定义新的文件扩展名config.cson
。
对于单个文件,您可以使用语法选择器;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 (Embedded Ruby templates)。它来自 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'
}
]
...
例如,如果您想.jsx
使用 javascript 语法打开所有文件,则需要将其添加到您的config.cson
"*":
core:
customFileTypes:
"source.js": [
"jsx"
]
这会将所有 .jsx 文件映射为使用 js 语法打开。
看起来已经为此发布了一个全新的软件包。 https://atom.io/packages/language-ejs。
正如 Dave Andersen 在隐藏的评论中提到的那样,现在可以在没有任何额外包的情况下执行此操作,并且在此处记录。