Emacsにyasnippetを導入&スニペットの登録方法
2017/01/31
こんにちは、okutani(@okutani_t)です。yasnippetを利用することで、登録済みのスニペット(テンプレート)をすぐに呼び出すことができます。
これでプログラミングでよく利用するコードや、決まった形式のメモなどを素早く記述することができますね。
さっそく導入方法をみていきましょう。
参考emacs 最強スニペット展開プラグイン yasnippet.elのインストール! – うめすこんぶ
スポンサーリンク
もくじ
yasnippetの導入
ではEmacsにyasnippetを導入してみましょう。それぞれの導入方法について見てみます。
git cloneを使った導入
下記コマンドで導入します。
$ cd ~/.emacs.d/elpa
$ git clone https://github.com/capitaomorte/yasnippet
package.elを使った導入
「M-x package-list-packages」でpackage.elを使って導入できます。
今回はmelpaから導入してみました。「i」→「x」でインストール。
/Users/ユーザ名/.emacs.d/elpa/yasnippet-20150415.244/
に導入されます。
Caskを使って導入
Caskというツールを使っても導入できます。.emacs.d/Caskに以下のコードを記述。
(depends-on "yasnippet")
インストール。
$ cask install
Caskについての詳しい使い方は以下の記事を参考にしてみてください。
追加のスニペットファイルを取得
デフォルトで用意されたスニペットがそのまま利用できますが、追加でスニペットを導入するとさらに便利に。下記サイトから追加スニペットをダウンロードしましょう。
LINKAndreaCrotti/yasnippet-snippets · GitHub
展開後、「yasnippets」とリネームして「.emacs.d」に配置します。
これで必要なファイルの準備が整いました。
init.elに設定を記述
init.elに設定を記述していきます。パスはインストールしたyasnippetのバージョンに合わせてください。
;; パスを通す
(add-to-list 'load-path
(expand-file-name "~/.emacs.d/elpa/yasnippet-20150415.244/"))
;; 自分用・追加用テンプレート -> mysnippetに作成したテンプレートが格納される
(require 'yasnippet)
(setq yas-snippet-dirs
'("~/.emacs.d/mysnippets"
"~/.emacs.d/yasnippets"
))
;; 既存スニペットを挿入する
(define-key yas-minor-mode-map (kbd "C-x i i") 'yas-insert-snippet)
;; 新規スニペットを作成するバッファを用意する
(define-key yas-minor-mode-map (kbd "C-x i n") 'yas-new-snippet)
;; 既存スニペットを閲覧・編集する
(define-key yas-minor-mode-map (kbd "C-x i v") 'yas-visit-snippet-file)
(yas-global-mode 1)
「'(“~/.emacs.d/mysnippets”」の行では、自分で作成するスニペットの置き場所を指定しています。
それに合わせて「~/.emacs.d/」に「mysnippets」フォルダを作成しておきましょう。
では実際に使ってみます。
yasnippetの利用方法
適当にhoge.htmlを作成し、「M-x html-mode」としておきます。
「a」と打ち、「TABまたはC-i」を押してください。
<a href=””></a>が展開されて「””」の中にカーソルが移動しています。
利用できるスニペットを調べる
TABで展開できるテンプレートは次のコマンドで調べることができます。
M-x yas-describe-tables
html-mode中に実行すると、次のように表示されます。
「key」文字を打った後にTABを押せば「name」が展開されます。
次は自分で作成したスニペットを登録してみましょう。
新しくスニペットを作成する
スニペットを新たに作成してみます。html-modeで「C-x i n」と入力し、*new snippet* バッファを開きます。
次のように入力します。
- name
- key
- # コメントが残せます
- # ーー 以下
テンプレートの名前
TABで展開するキー
展開したいコードを記述。$0を記述すると、展開後にカーソルがその位置に飛ぶ。$1,$2と続けることができる
デフォルト文字の設定
次のような形で「# ーー 」以下に記述すると、デフォルトの文字が挿入され、「TABでそのまま$0に飛ぶ」or「文字入力でデフォルト文字を上書き」が選択できます。
${1:デフォルト文字}
記述が終わったら「C-c C-c」で保存。
保存時に、作成したスニペットを適応するモードを選択するよう言われます。html-modeが指定されているので、そのままEnter。
スニペットを保存する場所を指定します。「y」を入力。
「~/.emacs.d/mysnippets/html-mode」に保存されます。「y」を入力してEnter。
これでhtml-mode時に「fo TAB」とすることで、作成したスニペットを利用することができます。
また、「C-x i i」とすることで、nameから展開することもできます。
既存のスニペットの編集
既存のスニペットを編集するには「C-x i v」→「スニペットのname」を入力。途中まで打てば候補が表示されます。
再編集できます。
これで自由にスニペットを登録&編集ができるようになりました。
まとめ
yasnippetを利用することで、決まった形のコード入力がスムーズになりました。
自分の好きなようにスニペットを作成して、さらにEmacsを便利に使ってみてください。
Web開発のお仕事を募集しています
フリーランスのエンジニアとして、Webシステム開発のお仕事依頼を随時募集しています(現在の業務量によってお受けできない場合もあります)。
「Ruby on Rails」「JavaScript(jQuery, Reactなど)」「HTML + CSS」を用いたシステム開発、「Heroku」等を用いたサーバー構築・運用、「Git」や「GitHub」を利用したソーシャルコーディングなどに対応しています。
ご依頼を検討している方は、下記リンク本ブログからのお問い合わせ、もしくはokutaniのポートフォリオからご連絡ください。
LINKお問い合わせ
スポンサーリンク