Sublime Text

MacもすなるターミナルからSublime Textといふものを、Windowsもしてみむとてするなり

つまり、Jekyllとか静的サイトジェネレータの動作検証のために適当にでっち上げたプロジェクトフォルダをSublime Text 3に投げたい!

ほぼメモです。

コマンドプロンプトの場合

C:\Program Files\Sublime Text 3にパスを通す。=環境変数設定のPATHのとこに;区切りでC:\Program Files\Sublime Text 3を追加。

sublime_text.exe test.txt

こんな感じでいける。Macでもそうだが、存在しないファイルも作成できる。

Powershellの場合

上記を参考に。

subl test.txt

これでいけた。

ckw+nyaosの場合

_nya(拡張子なし設定ファイル)に以下を追加。

# 以下エイリアス
alias subl=sublime_text.exe

最初イコールの右側をC:\Program Files\Sublime Text 3にしたらC:\Program Files\Sublimeまでしか反映されなかった。エイリアスにスペース含むパス指定できない、二重引用符でくくってもダメ。

パス通した後exe直指定なら、スペース含まないのでOK。

subl test.txt

これでいけた。

おまけ:Bluewindの場合

特定のフォルダに新規ファイルを作りたい、具体的にはResophNotesの同期が怪しいのでResophNotes使わずにnvALTの同期フォルダに新規メモ作りたい場合など。

まず、BluewindSublime Text 3を登録。今回、キーワードはstとした。

高度な設定(H)>入力時のパラメータにキーワードを使う(P)を有効化。

メモを入れるフォルダを登録。キーワードはnotesとした。

例えば、

st notes

でメモフォルダをSublime Text 3で開く

ST notes\test.txt

でtest.txtをメモフォルダに作成して開く。

ファイル名に半角スペースを含めたい場合はパラメータ全体を二重引用符でくくる。

ST "notes\test test.txt"

さらに、別のアイテムとして、作業フォルダ=メモフォルダでSublime Text 3を登録。キーワードはnstとした。

この場合、以下のコマンドでメモフォルダにtest.txtを作成して開くことができる。

nst test.txt

Sublime Textは存在しないファイルを与えるとバッファ作成してくれるので、このような使い方ができる。

Sublime Textでの"save_on_focus_lost"とシンタックス別の設定

変更を自動的に保存する”save_on_focus_lost”

Sublime Textにはsave_on_focus_lostという設定項目があり、これをtrueにしておくと、他のタブやウインドウに切り替えた(フォーカスが外れた)時に、自動的に変更を保存してくれます。

この機能はデフォルトではfalseになっており、設定ファイルに以下の記述を追加することで有効になります。

"save_on_focus_lost": true,

非常に便利なのですが、うっかり妙なことを書けないプレッシャーもあります。特にPostach.ioの原稿ファイルなどは、保存した瞬間に更新されるので注意が必要です。

そこで、設定する対象を絞ることで、安全にこの機能を運用することができます。

設定箇所1:全体設定

全てのファイルで有効にするには、ユーザー設定に記述します。メニューバーのSetting - Userで設定ファイルを開き、上記の行を追加すると有効になります。

設定箇所2:シンタックス別の設定

Sublime Textでは、デフォルト設定・ユーザー設定の他に、シンタックス別の設定を行うことができ、ユーザー設定と部分的に異なる適用が可能です。

シンタックス別の設定ファイルは、メニューバー内のSyntax Specific - Userから開くことができます。記述方法はユーザー設定と同様です。

現在のシンタックス

Sublime Textで指定されるシンタックス(構文)は、各種プログラミング言語の他、Markdown、Plain Textなどがあります。Sublime Textは、指定されたシンタックスに基づいて、設定やカラースキームを適用します。

現在のシンタックスは、ウインドウ右下に表示され、クリックすると変更することができます。

現在のシンタックス

Syntax Specific - Userは、現在のシンタックスに対して適用されます。

シンタックスの指定

この「現在のシンタックス」は、ファイルの拡張子や、実際に記述されている構文と関係はありますが、イコールではありません。

まず、拡張子ごとに関連付けられたシンタックスがあり、これは右下のシンタックス表示からOpen all with current extension as…で変更できます。

拡張子のデフォルトシンタックスを指定

ファイルを開いた際、まずは拡張子に基づいてシンタックスが選択されます。その後、先述の方法で、現在のビュー限定でシンタックスを選択することができます。

どのシンタックスで自動保存を有効にするか

例えば私の場合、Sublime Textの設定ファイル(Json)はブラウザで解説記事を参照しながら変更することが多い、つまり完成前にフォーカスが外れることが多いので、自動保存しないようにしています。

一方、Plain TextやMarkdownは、誤って保存することの問題が少なく、むしろ変更を失うことの問題のほうが大きいため、自動保存を有効にしています。もっとも、Sublime Textは終了時にバッファ内容を保持するため、ファイルとして保存しなくても変更を失う恐れは少ないのですが。

Syntax Specific設定を活用してより便利に

シンタックス別の設定が有効な項目としては、他にword_wraptab_sizetranslate_tabs_to_spacesなどがあります。例えば、tab_sizeはMarkdownでは4、HTMLでは2にすべきでしょう。

こうした設定を行うことで、Sublime Textをより多くの場面で、快適に利用することができます。

Sublime Text(Mac)で、パネルへの日本語入力をTextExpanderで行う(追記:Alfred Workflow版)

Sublime Text(Mac)、検索パネル等で日本語入力する際の問題

Mac OS X版のSublime Textでは、検索パネル等で日本語変換確定のためにエンターキーを押すと、それが検索開始等のコマンドになって、意図しない動作が起こる上に、変換前の文字が消えてしまうという問題があります。

このうち、一部の(最初から設けられている)パネルについては、キーバインド変更でコマンドをエンターキー以外に割り振ることで、この問題を回避することができます。

しかし、特に追加したパッケージによって表示されるパネルにおいては、キーバインドの指定ができないものが多くあります。このような場合、パネルに日本語を入力するには、エンターキーを用いずに変換確定するなどの工夫が必要になってきます。

TextExpanderを利用して、簡単に日本語を入力する

ここで、簡単な解決策として、まとめて記述したテキストをペーストすることが考えられます。しかし、いちいち別のエディタを開いたり、Automatorで作ったりするのも面倒なので、TextExpanderでどうにかすることにします。

TextExpanderにはフィルイン(fillin/公式の怪しい和訳だとファイルイン)という機能があり、スニペットを展開する際に、ユーザーにテキストの入力を求めることができます。これを利用すると、「安全な」テキスト入力フィールドを簡単に呼び出すことができます。この中で変換確定しても、余計なコマンドがトリガーすることがないためです。

この場合、純粋にフィルインだけのスニペットにしたいので、内容は以下のようになります。

%filltext:name=入力フィールド:width=60%

こうすると、Sublime Textのパネルで対応するAbbreviationを入力することで、以下画像のようなテキスト入力フィールドが表示され、安全にテキストを記述することができます。

TextExpanderによるテキスト入力フィールド

これはこれでめどいですけどね。

追記:Alfred Workflow

よく考えたら、Alfred Workflowのほうが楽な気がしてならない。

スクリーンショット

1
2
3
4
5
6
7
on alfred_script(q)
set the clipboard to q
delay 0.2
tell application "System Events"
keystroke "v" using {command down}
end tell
end alfred_script

キーワードに続く入力をクリップボードに格納し、キー操作「⌘V」を送るAppleScriptです。

TextExpanderのフィルインフィールドはなんか見た目が汚いし出てくるのが遅いので、こっちのほうが快適に利用できます。

Sublime TextとAtom.ioの比較

両者の現状

私はタッチしていませんが、2012〜2013年初頭ごろ、Sublime Textの爆発的な流行があったようです。

その後、Sublime Text絡みの開発者のほとんどが利用するGithubから、類似する高機能テキストエディタのAtom.ioがリリースされ、強力な競合相手となっています。

現状では私はSublime Textを選択していますが、その理由は以下の点にあります。

動作速度

環境にもよるのでしょうが、おおむねAtom.ioの動作速度はSublime Textに劣るようです。私の場合、型落ちのMacBook Airを使用しているせいもあり、Atom.ioの動作速度がほとんど使用に堪えないレベルです。特に、設定を変更するたびに動作を受け付けなくなるのは大きなストレスでした。また、終了するときにも必ずと言っていいほど反応しなくなり、いちいち不安にさせてくれます。

パソコンを買い換えるよりはよりSublime Textのライセンスのほうが安いというのが、我がPC環境の悲しい現状なのですね。

プロジェクトホーム

Atom.ioの場合、プロジェクトのホームフォルダを指定することになります。Sublime Textでは、互いに離れたフォルダをプロジェクトに関連付けることができます。

これは、Dropbox上の原稿フォルダや、Github Pagesのローカルリポジトリフォルダを扱う私にとってはかなり面倒な点です。

キーバインド設定の違い

どちらの場合も、キーバインドが有効になる状況を設定することができる点は同じです。

Atom.ioのキーマップ構造については、以下に解説がありますが(英語)、あるキー(コンビネーション)に状況に応じた複数の機能を割り当てる場合、その分岐基準になるのはフォーカスされているフィールドのみのようです。

一方、Sublime Textでははるかに柔軟な設定が可能です。例えば、以下の通りです。

  • 編集中のファイルタイプ
  • 前後のテキスト(正規表現で指定)
  • テキストの選択状態

さらにスニペットコマンドの変数を組み合わせることで、キーバインドで正規表現置換的な処理も行わせることができます。

例えば、「Markdownリストで改行した場合、自動的にリストアイテムを追加」という処理が、キーバインド設定だけでできます。

Markdownリアルタイムプレビューはいらない

Sublime TextにないAtom.ioの機能として、Markdownのリアルタイムプレビューがあります。

いちおうSublime Textでやってできないことはないようですが、外部プログラムを要求します。

しかし、個人的には、Markdownをプレビューしながら書くべきではないと考えています。

まず、Markdownそのものがソース状態での可読性を高めたものであり、HTMLソースに比べて直感的に意味や構造が把握しやすいため、慣れればプレビューの必要性が少ないということがあります。

また、プレビュー画面を参照することによって、視線移動が増え疲労が増しますし、レンダリングするために多少なりリソースも食われます。レンダリング結果の確認くらいしますが、それはたまにブラウザプレビューするだけで十分です。

SimilarにしてAlternativeならず

以上は、ソフトウエアの設計上の問題であり、一朝一夕に解決することは難しいように思われます。

Atom.ioはSublime Textに類似したアプリケーションではあるが、それを代替しうるものではないと思われます。

Sublime Textがなんでも投稿できてヤバい

高機能テキストエディタとして人気のSublime Text。Github謹製ののAtom.ioがオープンソース化したり、開発者が一人しかいなくて開発が停滞しているで先行き不透明な感もありますが、長きに渡って多くの開発者からパッケージ提供を受けてきた優位は未だ揺らがないものがあります。

各種パッケージによってもたらされるSublime Textの長所として、多くのサービスへの投稿が可能な点があります。どれかひとつならできても、全部できるとなるとなかなか見付からないもの。個人的にビビビっときたパッケージは、以下のようなものがあります。

各種投稿用パッケージ

SFTP

FTPクライアント機能を提供する。編集から即アップロードしたり、(選択的な)自動アップロードも可能。Automatorによる自動アップロードと比べると、監視ファイルの選択が簡単なのと、手動アップロードも選択できるのと、Windowsでもできるのが良い。

Gist

Github Gistsの管理機能を提供する。PrivateとPublicが選択でき、投稿後にURLをコピー。さらに、既存のGistを開いたり、文中に挿入、アップデートも可能。

ただし、「Embed as Script」コマンドで生成されるコードがなぜか正常に表示されない。Privateだから?

Git

Git管理機能を提供。これ一本で管理下にAdd/変更をCommit/リモートリポジトリにPushまで可能……なはずが、未だにCommitに成功していない。

Evernote

Evernoteへの投稿機能を提供する。後者は前者のフォーク。Sublime Text 2では認証がうまくいかなかった。

当然のMarkdownサポート。Bywordの同等機能に比べると、CSSを編集可能な点と、投稿時にガチャガチャ動かす手数が少ないのが良い。

ただし、初期設定で認証用の情報を取得する必要があり、大変めどい。

Qiita

なにこれヤバすぎへん?

Qiitaのアカン点として、公式クライアントであるKobitoがMacしかサポートしておらず、しかもファイル実体がテキストとかじゃないのでぜんぜん使い回しが利かないというのがあったのですが、あとMarkdown編集支援がいっさいなくて心が折れましたが、これ一本で全部解決します。

Qiitaはドザにこのパッケージを推奨すべき。

wordpress

試してない。MarsEdit買うよりはずっといいように思える。ローカルにファイル残るし。

Sublime Textに全部おまかせ

これらのパッケージが、全てひとつのアプリケーションで利用できることは非常に便利です。また、コンテンツの作成においてSublime Textの高度な編集機能を利用できる点も大きい。というかQiitaパッケージやばすぎるでしょ。Sublime Textのライセンス持ってたらKobitoとか使う意味がわからないレベル。

というわけで、技術系の記事はいくつかQiitaに投げることも考えております。

Sublime Textのキーマップは3(+1)つの要素で構成されている

Sublime Textでは非常に柔軟なキーバインド設定が可能ですが、さまざまな要因でキーバインドが決定されるため、知らず知らずのうちに競合を招いたり、その解決方法になかなかたどり着けなかったりします。

そこで、Sublime Textのキーバインドがどのように構成されているのかをまとめます。

キーバインドを決定する要素

Sublime Textのキーバインドは、以下の要因によって決定されます。下にあるものほど優先されるようです。

  • デフォルトキーマップ
  • ユーザーキーマップ
  • パッケージキーマップ

これらを編集することで、キーバインドをコントロールすることができます。

デフォルトキーマップの変更

デフォルトのキーマップは、Macのメニューバーでいうと「Sublime Text > Preferences > Key Binding - Default」でアクセスすることができます。

ただし、Sublime Text 3においては、これを閲覧することはできても編集することはできません。編集するためには、ユーザーが該当するキーマップ定義ファイルを作成する必要があります。

Sublime Text 3 では、Default (OSX).sublime-keymap - Default は表示することはできても、変更ができません。(ファイルも見つからない。)

この対策として、Default (OSX).sublime-keymap という名前でファイルを自分で作って(内容もコピーして)、以下のフォルダに置けば編集できるようになります。(フォルダがなければそれも作る)

Macintosh HD> ユーザ > (自分のユーザ名) > ライブラリ > Application Support > Sublime Text 3 > Packages > Default

ユーザーキーマップの変更

ユーザーキーマップについては、デフォルトのような制限はありません。「Sublime Text > Preferences > Key Binding - User」でアクセスし、編集することで設定できます。(最初はなんの記述もされていない。)

ここで注意が必要なのは、デフォルトキーマップに記述されているコマンドのキーバインドを変更する方法です。

例えば、デフォルトキーマップには以下のような記述があります。

{ "keys": ["super+shift+n"], "command": "new_window" },

これを別のキー(コンビネーション)に割り当てるため、ユーザーキーマップに以下の記述を追加するとします。

{ "keys": ["super+alt+n"], "command": "new_window" },

この場合、”super+alt+n”で新しいウインドウを開くことができますが、”super+shift+n”でも同様の結果になります。”super+alt+n”に統一するためには、デフォルトキーマップの該当記述をコメントアウト、または削除する必要があります。
下記は、コメントアウトする場合の例です。

// { "keys": ["super+shift+n"], "command": "new_window" },

パッケージキーマップ

パッケージのキーマップには、最も注意が必要です。

Sublime Textにおけるパッケージとは、以下の要素を含みます。

テーマ
: Sublime Text全体の外観を決定する

カラースキーム
: 文字や背景の表示を決定する

ランゲージ
: 扱えるファイルの(プログラミング)言語を追加する

プラグイン
: Sublime Textに機能を追加する

キーマップ
: Sublime Textのキーバインドを決定する

シンタックス設定
: ファイルの(プログラミング)言語ごとの設定を変更する

多くのプラグイン(を含む)パッケージでは、追加した機能に、自動的にキーバインドを割り当てます。これが、特にユーザーキーマップと競合することがしばしばあります。

パッケージのキーマップにアクセスするには、例えばGistパッケージの場合、「Sublime Text > Preferences > Package Settings > Gist > Key Binding - Default」を選択します。

ただし、Sublime Text 3でPackage Controlを利用する場合、パッケージがアーカイブ化されており、デフォルトキーマップと同様に編集することができません。編集するには、解凍された状態のパッケージを入手する必要があります。

この場合、パッケージファイルを直接解凍し、再度圧縮することも可能です。

しかし、最初からPackage Controlを利用せず、パッケージファイルを入手するほうがおすすめです。ほとんどのパッケージはGithubで公開されているため、Git CloneまたはZipダウンロードによって、解凍された状態のパッケージを入手できます。
例えば、Gistパッケージは、以下のURLでホストされています。

入手したパッケージを、フォルダごとSublime Textのパッケージフォルダに置くことで、キーマップが編集可能になります。パッケージフォルダは、「Sublime Text > Preferences > Browse Package…」でアクセスできます。

ただし、この方法でパッケージを導入する場合、Sublime Textを再起動する必要があるようです。

状況別のキーバインドと優先順位

さらに、キーマップファイルの内容を見ると、以下のような記述があります。

{ "keys": ["escape"], "command": "single_selection", "context":
    [
        { "key": "num_selections", "operator": "not_equal", "operand": 1 }
    ]
},

context以降の部分は、このキーバインドが有効になる状況を指定するものです。これにより、同じキー(コンビネーション)に、異なる機能が割り当てられています。

コンテクストをうまく指定することで、Sublime Text内のキーバインド競合を解消することができます。

さらに、「同じキー(コンビネーション)」に複数のコマンドが割り当てられており、さらに複数のコンテクスト条件を満たす場合、記述順序によって優先順位が決定されます。

このctrl+gで何かを消すという機能、実は優先順位をつけることができます。優先順位のつけ方はいたって簡単。キーバインドの設定を最後に消したい項目から順に並べてやるだけです。

OSなどによるキーバインドとの競合

これは、主にMacの日本語入力システム(IME)との関係で発生するものです。

Mac OS Xにおいては、Sublime Textのキーバインドは、常にIMEのキーバインドより優先して実行されます。したがって、日本語確定時のエンター、候補選択のタブ、変換のctrl+kなどが、予期しない動作を引き起こすことがあります。

この問題に対する解決策は多数紹介されていますが、基本的には、IME側で競合するキーバインドの使用を避けるか、Sublime Text側のキーバインドを変更するしかありません。

競合が発生した場合、「デフォルト」「ユーザー」「パッケージ」の各キーマップを精査することで、原因となるキーバインドを発見し、編集して回避することができます。

Sublime Textの新規ファイル作成するパッケージ比較

Sublime Textで新規ファイル作成がめどい

Sublime Textでは、プロジェクトという機能によって、互いに離れた複数のフォルダをまとめて扱うことができます。私は、この機能を活用しています。
しかしそのために、新しいファイルを作る時、保存すべきフォルダも場合によってまちまちだということになります。Fenrirでごまかしていましたが、やってられないのでパッケージを探してみました。

プロジェクト内に互いに離れたフォルダがある場合はQuickFileCreator

Install Packageでは、2種の新規ファイル作成系パッケージが見付りました。

このうち、AdvancedNewFileは、保存先のフォルダを明示的に選択することができません。

一方、QuickFileCreatorの場合、まずプロジェクト内のフォルダを一覧から選択し、その後ファイル名を入力する流れになります。

そのため、このような場合はQuickFileCreator一択です。ファイル作成が非常に楽になりました。

BitbucketでSublime Textの設定ファイルを管理

出先でWindows版Sublime Textの設定ファイルを参照したい

現在、自宅のWindowsデスクトップマシンと、モバイル用のMacBook Airの両方でSublime Textを利用しています。

まだまだ設定を模索中なので、作業中にどんどん設定が変わっているので、外出中にWindowsでの変更内容を参照したいことがしばしばあります。

方法としては、設定内容をどこかのクラウドサービスにメモしておくとか、ファイルそのものをDropboxにコピーするとか、何ならDropboxにハードリンクを作っておくとか色々考えられますが、いまいちしっくり来ませんでした。

そこで、設定ファイルをGit管理し、どちらの端末でも参照できるようにすると同時に、差分を取れるようにすることを考えました。

なお、以下はSublime Text 3前提です。

Gitのインストール

たぶん、ここでOSに合わせたインストーラ落とせば大丈夫です。

Bitbucketに既存の設定ファイルを追加

BitbucketとかGithubを始めよう的な記事を見ると、とりあえずリモートリポジトリ作ってローカルにクローンせいというようなことが書いてあります。

Gitの仕組み上、「本体」はリモートであってローカルではありません。私はリモートリポジトリに変更をコミットさせていただきお伺いを立てるワンオブ開発者です。例え他の開発者がいなくとも。

しかし、作成した空のリモートリポジトリを、Sublime Textの設定ファイルがあるフォルダにクローンしようとすると失敗します。ローカル側のフォルダは空である必要があるためです。

既存の設定ファイル群をどかして、クローンしてから戻してやればいいような気もしますが、コマンドラインから既存のファイルをリモートリポジトリに追加できるようなのでやってみました。

既存のファイルをリモートリポジトリに追加する

これは、手順としては次の通りです。

  1. 既存のファイルが存在するフォルダをGit管理下に置く
  2. 既存のファイルをコミット対象とする
  3. 既存のファイルをコミットする
  4. コミットされた変更されていないファイルをリモートへプッシュする

1〜3

上記を参考にしました。

まず、Windowsなら、「すべてのプログラム」からGit shell、Macならターミナルを起動します。

次に、カレントディレクトリをSublime Textの設定フォルダに移動します。

Bitbucketで管理すべきフォルダは、Windows 7ならc:\Users\MM\AppData\Roaming\Sublime Text 3\Packages\User、Macなら/Users/user/Library/Application Support/Sublime Text 3/Packages/Userです。

コマンドは、Winならcd "c:\Users\MM\AppData\Roaming\Sublime Text 3\Packages\User"。フォルダパスにスペースが含まれているので、二重引用符で括る必要があります。ペーストは右クリックメニューからできます。

Macならcd /Users/user/Library/Application\ Support/Sublime\ Text\ 3/Packages/User。ターミナルにフォルダをドラッグ&ドロップすると簡単です。

以下は共通です。

  • git init
  • git add .
  • git コミット -m "message"

messageの部分は任意のテキストです。

これで、既存のフォルダと設定ファイル群がGitの管理下に入り、コミット対象として追加されました。

4

次に、ブラウザでBitbucketのウェブサイトにアクセスしてログイン、リポジトリを作成します。アクセスレベルをプライベートリポジトリにし、リポジトリタイプはGitを選択します。先に作っておいてもいいです。

新規リポジトリページにアクセスすると、以下のような内容が表示されます。

新規リモートリポジトリ

ここで「I have an existing project」をクリックすると、以下のようなコマンドが表示されます。

cd /path/to/my/repo
git remote add origin https://masafumi_moriyama@bitbucket.org/masafumi_moriyama/sublime-text-3-win.git
git push -u origin --all # pushes up the repo and its refs for the first time
git push -u origin --tags # pushes up any tags

1行目はカレントディレクトリの移動です。「/path/to/my/repo」の部分は適宜コミットすべきファイルのあるフォルダを指定するのですが、もうできているのでやらなくていいです。

2〜4行目を順に実行すると、すべてのファイルがBitbucket上のリモートリポジトリにプッシュされます。

別の端末から参照

リモートリポジトリに置かれたファイルは、Bitbucketウェブサイトで閲覧したり、別の端末でクローン(ダウンロード)できます。

例えば、リポジトリページ左メニューの「ソース」にアクセスすると、プッシュされたファイル一覧が表示されます。

ファイル一覧

この中のファイル名をクリックすると、内容が表示されます。

ファイル内容

変更してからコミットすると、SourceTreeでも表示され、ファイルや属するフォルダを開いたりできます。

SourceTreeでの表示

また、ウェブサイトからクローンすれば、全てのファイルが指定したローカルフォルダにダウンロードされます。

クローンメニュー

これで、重要な変更があるたびにコミットすれば、MacからもWinの設定ファイルを参照できます。Keymapはともかくとして、SettingはMac/Winで互換性があるので、クローンして上書きしてもよいでしょう。

Sublime Text Markdown PreviewでのHTML生成時にtitle付与したい

参考

Markdown Previewについて整理

Python Markdownのmeta拡張

Markdown PreviewにビルトインされたPython Markdownにはmeta拡張が用意されており、フロントマターによりtitle要素とmeta要素を与えることができる。

この拡張は、初期設定で有効になっている。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
List of enabled extensions of the selected markdown parser.
You can get the full list of extensions at:
* The python markdown parser, the `markdown`: http://pythonhosted.org/Markdown/extensions/index.html
default - use the default set of extensions, see table later.
[ "default", "def_list", ... ] - a list of extensions. Use "default" to include the default extensions.
Parser | "default" Values
------------|---------------------------
default | ["extra", "github", "toc", "headerid", "meta", "sane_lists", "smarty", "wikilinks"]
markdown | ["extra", "github", "toc", "headerid", "meta", "sane_lists", "smarty", "wikilinks"]
github | extension's values are not used.
*/
"enabled_extensions": "default",

このように、default指定時に有効になる拡張に含まれる。

meta拡張によりtitle要素を与えるには、以下のような形でフロントマターを記述する。

1
2
3
Title: My Document
This is the first paragraph of the document.

フロントマターの上に空行があってはならず、フロントマターとコンテンツの間には空行を挿入しなければならない。

YAML Front Matter

さらに、Markdown PreviewはYAML Front Matterをサポートしている。YAML Front Matterで展開された情報は、meta拡張によるそれを上書きする。

YAML Front Matterを展開するには、ユーザー設定で以下のように記述する。

1
2
3
4
/*
Strips the YAML front matter header and converts title to a heading
*/
"strip_yaml_front_matter": true,

この場合、フロントマターは以下のように記述する。

1
2
3
4
---
# Meta Data
title: Test Page
---

フロントマターの前に空行があってはならないことは明らかだが、2回目の---とコンテンツの間に空行を挿入すべきかどうかは明記されていない。

実際には展開されない

しかし、以上を踏まえた上で記述・変換しても、title要素として展開されない。

コンテンツとして残るわけでもないので、meta拡張などが完全に機能していないわけでもない。

例えば、ユーザー設定でmeta拡張を無効にした場合は、p要素として残る。

不明点:YAML Front Matterはどのようにサポートされているのか?

Markdownのように専用のパーサー ライブラリを組み込んでいるようではない。

Markdown Previewの独自実装?

Github Issues

恐らく同種の問題で、解決策が議論されているが難しすぎてわからーん!

Postach.ioフロントマター入力用スニペット

承前。

Postach.ioのDropbox投稿に必須のフロントマターを、簡単に入力できるようにした。

総じて、タイトルは書き終わってから入れたほうが楽だと思われ。

TextExpanderの場合

title: %filltext:name=タイトル%
date: %Y-%m-%d %H:%M
tags: 

タイトルをフィルイン。まあなくてもいい。
日時を自動挿入。

AutoHotKeyの場合(2014/07/27修正)

日時を自動挿入する。

Sublime Textの場合

<snippet>
<content>
title: 
date: $1
tags: 

$2
</content>
<tabTrigger>::</tabTrigger>
<!-- <scope></scope> -->
<description>Postach.ioフロントマターのテンプレート</description>
</snippet>

日時を展開する方法が見当たらないので、手動で入力した後、タブキーで$2位置に飛べるように。