Sublime Text 3にファイルヘッダーに基づいてファイルタイプを認識させる(つまり、構文とビルドシステムを設定する)にはどうすればよいですか?
例:ファイルの最初の行が<!DOCTYPE html>
の場合、それはHTMLファイルとして認識されます。または、ファイルの最初の行が#!/usr/bin/env python3
の場合、それはPython 3ファイル。
私は通常、ファイル拡張子がこれを指示することを知っていますが、私はLinuxを使用しており、これらのファイルの多くはコマンドであるため拡張子がありません。
構文定義には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[^*]*-\*-'
詳細については、 構文定義のドキュメント を参照してください。
Gerard Rocheの答えを拡張するために、Sublime Text 3でこれらの構文定義ファイルを見つける方法がわからない場合は、 この答え が役に立ちました。
要約すると、MacOS Xでは、パッケージファイルは/Applications/Sublime Text.app/Contents/MacOS/Packages
にあり、拡張子が表示されていなくてもすべてZipファイルです。構文定義を変更するには、
<Language>.sublime-syntax
ファイルを開き、first_line_match
ルールを必要なものに変更します。Packages
フォルダーに戻します。Zipファイルを圧縮できないことを指摘してくれたxmnboyに感謝します。
ApplySyntax プラグインは、同じ拡張子などのファイルに異なる構文が必要な場合に、ケースを処理します。