はじめに
恥ずかしながら、せっかくDashを有料で購入していながら、その機能をろくに使えていなかった。今になってDashのスニペット機能の使い方がだんだんわかってきたのでここにメモ。
目標は、同じことを二度も三度もググらないようになること。
スニペット機能
スニペットの検索機能を使いやすくするためにいくつか工夫した。
1. Macのキーボードのグローバル設定で、Ctrl + Space
をDash呼び出しに割り当てる。
たぶんデフォルトでそうなっていると思うけどメモ。Dashを開いた状態で⌘ + ,
で設定画面を開き、Generalの Global search shortcutでDash呼び出しのグローバルキー設定を行なう。気に入らなければ既存のアプリと当たらない範囲で好きなだけ変えればよい。
もう一つのSearch using selected textの方は選択文字列が検索キーワードになるものだけど、今はこれは重視していない。各自で設定するよろし。
ついでながら、スニペットの保存場所はDropboxにしておくのがお勧め。複数のMac間でスニペットを共有できる。
2. スニペットの命名法を工夫
-
スニペット名は必ずセミコロン
;
で始めること
Dashはキー操作をウォッチしているので、ターミナルを含むどんなアプリケーションでもスニペットが使用できる。頭にセミコロンのような記号を付けておかないと、たとえばメールを書いていて突然スニペットが動き出したりする。他の記号でもよいのかもしれないけど、セミコロンは日本語でまず使わないので向いている。 -
スニペット名はアンダースコアで区切り、完全部分集合ができないようにすること
たとえば;html5_min
と;html5_min_meta
というスニペットを作ると、;html5_min
と入力した途端に1つ目のスニペットが動き出すので、2つ目のスニペットが入力できなくなってしまう。完全部分集合にしないというのはそういうこと。やってみればすぐわかると思うけど。
追記: 完全部分集合にしなくても、スニペット末尾にたとえば#
を置くと決めれば上のような気遣いをしないで済むことをTwitterで指摘いただきました。ありがとうございます!
- 直接呼び出したいスニペット名は短めに、メモ的なスニペットは長くなってもよいので検索キーワードを十分含んだスニペット名にする
自分はスニペットを2とおりに使っている。1つは、入力を楽にするためのキーボードマクロ的な使い方。これはスニペット名を短くして呼びやすくしておく。
2つ目はメモ的な使い方。会心のシェルスクリプトや複雑なgitコマンドなんかがこれ。この記事で説明しているのはこの2つ目の方。こちらは名前が長くなってもよいので後で検索しやすい名前を付けておく。
なお、入力しやすいようにタグ名はrb
とかjs
のように短く、母音のないものにしておきたい。
- スニペットのタグ名と同じ単語を、セミコロンの直後に置く
これが一番肝心な工夫。図を見てもらうとわかると思うけど、css
というタグの中にあるスニペットは全部;css_
で始まっている。タグにもcss
があり、スニペット名にもcss
とあるのは一見無駄に見えるのだけど、これが大事。
3. Dashのスニペット検索をカスタマイズ
⌘ + 3
(または⌘ + 2
) で表示されるスニペット検索画面の検索ウィンドウに小さな黒い三角形 (図) があり、これをクリックするとスニペットの検索条件をいろいろ設定できる。これがなかなか気付きにくい。
ポイントは、Snippets Onlyのプロファイルで、スニペットの検索時にDocsetを検索しないようにすること。スニペットとDocsetを同時に検索するとうざいので。
Snippets Onlyプロファイルで+
を押してSearch Keyword
を選び、セミコロン;
を入力する。これで、検索キーワードにセミコロンがあればスニペットしか検索しなくなる。よしよし。
準備完了
以上で準備が整った。ctrl + space
でDashを呼び出す。当然ながらDashは起動時に入力フォーカスを検索窓に置いてくれている。スニペットを検索するにはまず;
を入力する。続いてタグ名(css
とか)を入力すると、その名前を持つスニペットだけが高速でインクリメンタルで絞り込まれる。
それにさらに続けてキーワードを入力すると、スニペット名がさらにインクリメンタルに絞り込まれる。ここで重要なのは「入力をスペースで区切らない」こと。スペースで区切ると、以後の入力はスニペット内の検索に切り替わるので、絞り込みにならなくなる。逆に言えば、Docsetの検索ではスペースで区切ることでそのままドキュメント内を検索できる。
その状態で上下キーで探し、見つけたらEnter
を押せば貼り込まれる。
この検索のありがたいところは、スニペット名に文字列さえあれば、スニペット内の位置とは無関係に絞り込んでくれ、単語の一部であってもよいところ。
使い方がわかってくると、この爆速ぶりが病み付きになる。スニペットでは言語を指定するとシンタックスハイライトもやってくれる。
vimのneosnippetのようにエディタと一体化したスニペットよりは1ステップ増えるけど、どんなところでも使えるメリットはそれを補ってあまりある。
後はスニペットにどしどし登録するだけ。いつの日か同じことを2度ググらなくて済む日まで。(Evernoteがこのぐらい高速に検索できればそっちにするのだけど)。