Help us understand the problem. What is going on with this article?

Sublime Text - Plain Text(.txt)で自分独自記法のハイライト表示

More than 1 year has passed since last update.

Sublime Text3でplain text用に自分独自記法のシンタックスハイライトを作る

Sublime Textを使っていると、ソースコード以外にも会議メモや提案書の原稿や自分独自記法のToDoリストなど、plain text(.txt)でさまざまな文書を作成することがあります。
Wiki記法なりMarkDownで書くほどでもないがtxtの見栄えをわかりやすくしたい、というときに、自分独自記法に対して簡単にハイライト表示する方法です。
(ざっと対応するだけなら、15分程度で実現できます)

たとえば、plain textファイルだけど、
> は課題の見出し
-> は対応案
# はコメントアウト
という独自表記に対してハイライト表示したいとします。

対応方法

AAAPackageDevパッケージのインストール

  • syntax定義やsnippets、build systemなどのSublime Textの拡張作成(編集)支援パッケージ
  • Package Controlから普通にインストールしておきましょう

独自Syntax定義のテンプレート作成

  • ツール -> Packages -> Package Development -> New Syntax Definitionを選択して独自Syntax定義のひな型を作成します。

こんなファイルが生成されます

.TXT-tmLanguage.YAML-tmLanguage
# [PackageDev] target_format: plist, ext: tmLanguage
---
name: Syntax Name
scopeName: source.syntax_name
fileTypes: []
uuid: b143df37-fa63-4560-b0ce-bd6c5d57fc83

patterns:
-
...

このファイルをSublime Text 3/Packages/Userに以下のファイル名で保存しておきます
.TXT-tmLanguage.YAML-tmLanguage

Windows環境なら保存先のパスは以下になります
C:\Users\{user}\AppData\Roaming\Sublime Text 3\Packages\User

テンプレートファイルの編集

最初に name、scopeName、fileTypesを設定します

  • name : 独自Syntaxファイルの名前(メニュー表示で利用される。好きな名前でどうぞ)
  • scopeName : (対象がソースならsource、ソース以外ならtext) + 対象の拡張子
  • fileTypes : Syntaxを適用するファイルの拡張子

今回はplain textが対象なので、以下のようになります

.TXT-tmLanguage.YAML-tmLanguage
# [PackageDev] target_format: plist, ext: tmLanguage
---
name: Original Text
scopeName: text.txt
fileTypes: [txt]
uuid: b143df37-fa63-4560-b0ce-bd6c5d57fc83

patterns:
-
...

次は本命の部分です!
patternsの箇所に、ハイライトしたい正規表現とハイライト表示のパターンを定義していきます

  • match: ハイライトしたい表現にマッチする正規表現を定義
  • name : 正規表現にマッチした個所をどのようなハイライト表示とするかの定義
    • この部分きちんと理解しきれていないですが、TextMateの命名規則にマッチした文字列を定義することで、その命名にマッチしたハイライト表現になるようです
    • 具体的には以下のURLに記載されたscope nameを定義しておきます

今回は、以下のようにしました

.TXT-tmLanguage.YAML-tmLanguage
# [PackageDev] target_format: plist, ext: tmLanguage
---
name: Original Text
scopeName: text.txt
fileTypes: [txt]
uuid: b143df37-fa63-4560-b0ce-bd6c5d57fc83

patterns:
- name: comment.line
  match: ^[\ \t]*\#(.*)

- name: constant.character
  match: ^[\ \t]*>(.*)

- name: constant.numeric
  match: ^[\ \t]*\-\>(.*)
...

独自Syntax定義のビルド

ツール -> ビルドシステム -> convert to ... を選択して、F7
[JSON to Property List] を選択してビルドすると、独自Syntaxファイルと同じディレクトリに 同名の .tmLanguage ファイルができます。

Sublime text再起動すると、表示 -> シンタックスにOriginal Textが出てきます。
では、.txtファイルを開いて作成したOriginal Textを選択してみましょう。

動作確認

独自Syntaxで記載した箇所の色を確認します。
気にいらないなら、独自Syntax定義ファイルのpatternsのnameの箇所の値を変更して再度ビルド・・・

  • どのname表現でどんなハイライトとなるかは、利用しているカラースキーマにも依存します
  • ド派手(目に痛い?)表現にしたいなら、nameの箇所にinvalid系を設定しましょう
  • ハイライト表現が気に入らないなら、独自カラースキーマを定義する道もあります

デフォルト反映設定

plain text(.txt)ファイルを開いてる状態で、表示 -> シンタックス -> open all with current extention as から作成したOriginal textを選択します。
これでplain text(.txt)ファイルを開く場合には、作成したOriginal Syntaxが常に適用されます。

これで終了です。おつかれさまでした!
では、楽しい日本語コーディングライフを。

参考URL

http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html

future
ITを武器とした課題解決型のコンサルティングサービスを提供します
http://future-architect.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした