web-dev-qa-db-ja.com

Sublime Text3-ファイルヘッダーに基づいて構文を検出する

Sublime Text 3にファイルヘッダーに基づいてファイルタイプを認識させる(つまり、構文とビルドシステムを設定する)にはどうすればよいですか?

例:ファイルの最初の行が<!DOCTYPE html>の場合、それはHTMLファイルとして認識されます。または、ファイルの最初の行が#!/usr/bin/env python3の場合、それはPython 3ファイル。

私は通常、ファイル拡張子がこれを指示することを知っていますが、私はLinuxを使用しており、これらのファイルの多くはコマンドであるため拡張子がありません。

8
DanielTA

構文定義にはfirst_line_matchルール、例:

HTML: https://github.com/sublimehq/Packages/blob/master/HTML/HTML.sublime-syntax#L12

 first_line_match: (?i)<(!DOCTYPE\s*)?html

PHP: https://github.com/sublimehq/Packages/blob/master/PHP/PHP.sublime-syntax#L1

first_line_match: '^(#!.*[^-]php[0-9]?|<\?php)\b'

シェル: https://github.com/sublimehq/Packages/blob/master/ShellScript/Shell-Unix-Generic.sublime-syntax#L18

first_line_match: '^#!.*\b(bash|zsh|sh|tcsh)|^#\s*-\*-[^*]*mode:\s*Shell-script[^*]*-\*-'

詳細については、 構文定義のドキュメント を参照してください。

1
Gerard Roche

Gerard Rocheの答えを拡張するために、Sublime Text 3でこれらの構文定義ファイルを見つける方法がわからない場合は、 この答え が役に立ちました。

要約すると、MacOS Xでは、パッケージファイルは/Applications/Sublime Text.app/Contents/MacOS/Packagesにあり、拡張子が表示されていなくてもすべてZipファイルです。構文定義を変更するには、

  1. 解凍先の新しいフォルダを作成します(所定の場所で解凍すると、すべてのファイルを追跡するのが難しくなります)。
  2. 変更したい言語ファイルをこのフォルダにコピーして解凍します。次に、前の言語ファイルの名前をバックアップとして変更します。
  3. <Language>.sublime-syntaxファイルを開き、first_line_matchルールを必要なものに変更します。
  4. 非圧縮Zipを使用して、すべてのファイルを再度圧縮し、Zipファイルに元のファイルと同じ名前を付けてから、Packagesフォルダーに戻します。

Zipファイルを圧縮できないことを指摘してくれたxmnboyに感謝します。

2
JeffP

ApplySyntax プラグインは、同じ拡張子などのファイルに異なる構文が必要な場合に、ケースを処理します。

2