Skip to content
9月 27 / rakkyoo

Emacsで「ysnippet.el」を使ってみる.

スニペット関連では,Macのアプリで,

これを相当よく使っていました.

こんな感じに...

Emacs上で作業しているときも,このスニペットソフトで快適に使えているのですが,Emacsには言わずと知れた「ysnippet.el」があるので,試してみました.

インストール

Emacs24ならば,インストールはとっても簡単で,,,

1
M-x list-packages

とすると,
スナップショット 2012 09 27 11 33

こんな感じにリストがでてくるので,
スナップショット 2012 09 27 11 34
yasnippetの行にカーソルを合わせて,「ix」を押してインストールするだけです.
あとは,「.emacs」か「.emacs.d/init.el」といった設定ファイルに,設定を書けばいいだけです.

ちなみに,lis-package経由の場合はelpaに展開されていて,バージョン名のディレクトリとなるので,0.8.0をインストールした場合は,「”~/.emacs.d/elpa/yasnippet-0.8.0″」にパスを通します.

1
2
3
4
5
6
7
8
9
;; yasnippetを置いているフォルダにパス
(add-to-list 'load-path
             (expand-file-name "~/.emacs.d/elpa/yasnippet-0.8.0"))
(require 'yasnippet)
 
(setq yas-snippet-dirs
      '("~/.emacs.d/snippets"
        ))
(yas-global-mode 1)

設定はこれだけです.

使ってみる

スニペット展開

使いかたはとっても簡単で,すでに登録されているスニペットはそのまま使えます.
たとえば,まず,「C-x b *scratch*」として,*scratch*上で,
「M-x html-mode」として,HTMLモードにします.
その状態で,「href」と打ったあとで,「TAB」または「C-i」をすると,,,

1
<a href=""></a>

となって,「”」「”」の間にカーソルが移動します.

スニペット登録

これだけでも相当便利なのですが,自分のスニペットを登録していけば自由自在となるので,登録してみます.
これまたとっても簡単で,
たとえば,org-modeで「test」と打ってから「TAB」をすると「テスト テスト」となるようにしたければ,
org-modeの状態で,
1.M-x yas/new-snippet
2. ミニバッファーにスニッペト名を入力(Enter a snippet name:)「test」と入力
3. keyなどを入力

    1
    2
    3
    4
    5
    6
    
    # -*- mode: snippet -*-
    # name: test
    # key: 
    # binding: "keybinding"
    # expand-env: ((some-var some-value))
    # --

こんな感じになるので,key:に「test」と入力.「binding」はキーバインドを指定したい時なので,とりあえずは使わずにそのまま,「expand-env」使わないので,消去.

    1
    2
    3
    4
    5
    
    # -*- mode: snippet -*-
    # name: test
    # key: test
    # binding: "keybinding"
    # --

こんな感じ.
あとは,「# –」以下に置き換えたいものを書くだけ...

    1
    2
    3
    4
    5
    6
    
    # -*- mode: snippet -*-
    # name: test
    # key: test
    # binding: "keybinding"
    # --
    テスト テスト

こんな感じに.

4. 最後に,「C-c C-c」を押すと終了です.
Save snippet?と聞かれるので,「y」として,ディレクトリがない場合も作るようにすれば準備完了.

試しに「test」と入力してから「TAB」をすると「テスト テスト」となっています.

これだけでも便利なのですが,入力した後のカーソルの位置も指定できるのがすごいところです.

今は「テスト テスト」の最後にカーソルが来ていたのですが,「テスト」と「テスト」の間にカーソルを持ってきたい場合は,「$0」を置きます.

    1
    2
    3
    4
    5
    6
    
    # -*- mode: snippet -*-
    # name: test
    # key: test
    # binding: "keybinding"
    # --
    テスト$0 テスト

とするだけで間にカーソルが移っています.

いくつかの入力を続けて行いたい場合は,
$1,$2,$3・・・っと作ると,「TAB」で場所を移動できるようになります.

たとえば,,,

    1
    2
    3
    4
    5
    6
    
    # -*- mode: snippet -*-
    # name: test
    # key: test
    # binding: "keybinding"
    # --
    $1テスト$2 テスト$3

とすると,「TAB」を押すたびに,$1から順に移動します.最終的なカーソルの位置を指定したければ,「$0」を置けばそこが最終的な位置になります.

私は,org-modeでランニング記録をつけているのですが,

1
2
3
4
5
6
7
8
9
# -*- mode: snippet -*-
# name: running_data
# key: rd
# binding: "keybinding"
# --
|ワークアウト時間|$1-$2|
|時間|$3min|
|距離|$4km|
|$0平均ペース|$5min/km|

こんな感じにスニペットを登録しています.
表入力で,ワークアウトの時間から距離,平均ペースまでTABで移動できて,相当速く入力できるようになりました.

これからスニペットを育てていけば,Emacsライフがとっても快適になりそうです.

[`twib` not found]

Leave a comment

CAPTCHA


This blog is kept spam free by WP-SpamFree.