10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

yasnippetを使いこなすための第一歩

Posted at

具体的にはバンドルスニペットを使いこなすための情報を記載する。自作スニペットについては述べない。

本記事を読む価値のある人

  • yasnippetが何をしてくれるツールであるかは知っている
  • 自分でM-xコマンドを打つ程度にEmacs操作に慣れている
  • 自分のマシンで使える各メジャーモードのスニペットは把握できていない

現在のメジャーモードのスニペットを把握する

スニペットは各メジャーモードごとに有効/無効になっている。現在のメジャーモードで有効なスニペットを確認するのは以下のコマンド。


M-x yas-describe-tables

これでYASnippet tablesバッファに現在のメジャーモードで有効なスニペット一覧が確認できる。
このコマンドで現在使えるスニペットを知るだけでもだいぶ捗るはず。

helmを使っている人であればhelm-c-yasnippetを使えばスニペットのインクリメンタルサーチができるのでこれで身につけていくのもありかもしれない。

公式バンドルスニペット集を把握する

以下のGithubレポジトリに色々なメジャーモードのofficialスニペットが公開されている。
https://github.com/AndreaCrotti/yasnippet-snippets

これらのメジャーモードのスニペットはyasnippetをインストールした際にバンドルされているはず。公式スニペットがあるにもかかわらず,自分の環境でM-x yas-describe-tablesでスニペットを確認できないようであればyas-snippet-dirsにスニペットを読み込ませる設定を追加ことをお勧めする。
(内容を理解せずにWeb上の設定をコピペしただけの場合,デフォルトのyas-snippet-dirsを上書きしてしまっていることもある)

メジャーモード間の親子関係を理解する

各メジャーモード間には親子関係を設定することができ,子は親のメジャーモードのスニペットも使える仕様になっている。

バンドルされている各言語のメジャーモードでバンドルスニペットが設定されていたりするが,自分でインストールした3rdパーティーのメジャーモードにはスニペットが登録されていなかったりする。その場合に上記の仕様が役に立つ。

例えば, js2-modeでjavascript-modeのバンドルスニペットを使いたい場合,js2-modeの親をjavascript-modeに設定すれば良い。設定の仕方としては js2-modeのyasnippetディレクトリ内に.yas-parentsファイルを作成し,そこでjavascript-modeと記載する。実装例はこちら

ref. https://capitaomorte.github.io/yasnippet/snippet-organization.html

より詳細に

本記事で紹介したコマンド含めた,Major Commandはコードのドキュメント(Commentary)に記載されている。

おわりに

上記の情報で,日常的にyasnippetを使う習慣が作れるのではないだろうか。

まずバンドルされているスニペットを使う習慣がついてきた後にオレオレスニペットを登録するというさらに高度な技を身につけていく方が個人的には良い気がしている。

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?