54

我希望我的 .ejs 文件具有 html 语法,但是,它总是以纯文本形式打开文件。

在 sublime 中,您可以选择“以当前扩展名打开所有...”,然后选择您的语法。

崇高的 text3 语法

我看到您可以更改左下角的语法语法变化

如何使用特定语法打开特定类型的文件?

4

7 回答 7

126

这现在在 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 问题上为该功能所犯的许多错误所证明的那样。

于 2015-09-10T17:37:15.340 回答
6

编辑:自从我写这个答案以来,这个功能已经被添加到 Atom 核心中,有关详细信息,请参阅这个答案

文件类型 Atom 包

( https://atom.io/packages/file-types )

它完全符合标题问题的要求:您可以通过简单编辑文件来为现有语言定义新的文件扩展名config.cson

于 2015-02-02T17:59:36.353 回答
5

对于单个文件,您可以使用语法选择器;Ctrl++Shift设置L您在该文件上使用的语言。与自动检测不同,但在您使用不想为其设置默认值的文件时很有用。

于 2014-08-20T15:36:29.050 回答
4

简易模式:包括

如果你的语言真的只是 HTML,你可以设置一个简单的包来处理它。

创建一个名为的包langugage-ejsgrammars/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'
  }
]
...
于 2014-03-13T05:02:02.223 回答
4

例如,如果您想.jsx使用 javascript 语法打开所有文件,则需要将其添加到您的config.cson

"*":
  core:
    customFileTypes:
      "source.js": [
         "jsx"
      ]

这会将所有 .jsx 文件映射为使用 js 语法打开。

于 2016-11-18T07:04:01.097 回答
3

看起来已经为此发布了一个全新的软件包。 https://atom.io/packages/language-ejs

于 2014-03-12T20:32:22.987 回答
2

正如 Dave Andersen 在隐藏的评论中提到的那样,现在可以在没有任何额外包的情况下执行此操作,并且在此处记录。

于 2016-10-19T00:52:02.690 回答