如何在 Atom 文本编辑器中按文件类型创建默认语法?

问题描述 投票:0回答:8

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

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

sublime text3 syntax

我看到你可以更改左下角的语法syntax change

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

atom-editor
8个回答
136
投票

现在在 Atom 核心中,您不再需要该文件类型包。

在我工作的地方,我们使用 .phl 来表示某种 PHP 文件。要告诉 Atom 这一点,首先找到语言的范围名称(例如

text.html.php 
),然后编辑
config.cson
,如下所示:

core:
    customFileTypes:
      "text.html.php": [
        "phl"
      ]
    themes: [
// snip

您可以在

~/.atom/config.cson
找到此文件,或者在“设置”窗口中单击“打开配置文件夹”按钮。

很容易出错,人们在 GitHub issues 上针对该功能犯下的许多错误就证明了这一点。


6
投票

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

文件类型 Atom 包

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

它完全符合标题问题的要求:您可以通过简单编辑

config.cson
文件来为现有语言定义新的文件扩展名。


6
投票

例如,如果您想使用 javascript 语法打开所有

.jsx
文件,您需要将其添加到您的
config.cson

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

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


5
投票

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


4
投票

简易模式:包括

如果您的语言确实只是 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'
  }
]
...

3
投票

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


2
投票

正如戴夫·安德森(Dave Andersen)在隐藏评论中提到的那样,现在可以在没有任何额外软件包的情况下执行此操作,并且已记录在here


0
投票

作为快速解决方案,只需按右下角的“自动检测”并为当前文件选择所需的语法。bottom bar of ATOM

list of syntax

© www.soinside.com 2019 - 2024. All rights reserved.