问与答 如何在Atom文本编辑器中按文件类型设置默认语法?

reid · 2020-03-06 13:47:16 · 热度: 65

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

在sublime中,您可以选择“使用当前扩展名全部打开...”,然后选择语法。

sublime text3 syntax

我看到您可以在左下角更改语法syntax change

如何打开具有特定语法的特定类型的文件?

猜你喜欢:
共收到 7 条回复
bobby #1 · 2020-03-06 13:47:16

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

在我工作的地方,我们将.phl用于某种PHP文件。 要告诉Atom这一点,请像这样编辑~/.atom/config.cson

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

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

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

sydney #2 · 2020-03-06 13:47:18

简易模式:包含

如果您的语言真的只是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'
  }
]
...
arlen #3 · 2020-03-06 13:47:20

编辑:自从我编写此答案的时间起,此功能已添加到Atom核心中,有关详细信息,请参见此答案。

文件类型Atom包

([HTTPS://atom.IO/packages/file-types)]

它恰好满足标题问题的要求:您可以通过简单地编辑config.cson文件来为现有语言定义新的文件扩展名。

arlen #4 · 2020-03-06 13:47:21

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

bachelor #5 · 2020-03-06 13:47:23

似乎已经为此发布了一个全新的软件包。 [https://atom.io/packages/language-ejs。]

chad #6 · 2020-03-06 13:47:24

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

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

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

tegan #7 · 2020-03-06 13:47:26

正如Dave Andersen在埋葬的评论中提到的那样,现在无需任何额外的程序包就可以做到这一点,并在此处进行了说明。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册