2009-04-03
vim でファイル名のパターンによって選択されたスケルトンを自動挿入する
スケルトンの自動挿入 - 檜山正幸のErlang未確認情報 - はてなグループ: erlang
OPTのオフィシャルアプリケーションを構成するモジュールのネーミングはほぼ習慣化している。(「ネーミング」参照。)
であるなら、ファイル名が *_server.erl ならgen_serverスケルトン、*_sup.erl ならsupervisorスケルトンを自動挿入すりゃいんじゃないの。なんで今までやってなかったの? アホッ>自分。
便利そうだったので、vim で真似してみました。
実現方法について
初めは autocmd を使おうかと思ったのですが、ファイル名等が自動入力されるような Plugin があるんじゃないかと思い vim online を漁ったところ tSkeleton を発見しました。
少し使ってみて便利だった為、これを使う事にしました。
インストール
tSkeleton が依存している Plugin tlib を先に入れておく必要があります。
双方共に vba 形式となっている為、vba ファイルを vim で開いて「:so %」とコマンドを入力するだけでインストールが完了します。
スケルトンを作成
ヘルプには、「~/vimfiles/skeletons/templates/GROUP/FILETYPE PATTERN」という形式でスケルトンファイルを作成しておけば、autocmd を自動設定してくれると書かれている為、下記のようなファイルを作成します。
$ mkdir -p ~/.vim/skeletons/templates/erlang $ echo 'foo bar' > ~/.vim/skeletons/templates/erlang/erlang\ \#_sup.erl
これで、「*_sup.erl」にマッチするファイルを開くと「foo bar」と自動入力されるようになります。
ちなみに GROUP の箇所は自分用の識別子である為、何を指定しても良いようでした。
スケルトンを編集
今回、erlang 用のスケルトンを作成する為、下記のようにしてみました。
-module(<+FILE NAME ROOT+>). -author('cooldaemon@gmail.com'). -behaviour(supervisor). %% External exports -export([start_link/0, stop/0]). %% supervisor callbacks -export([init/1]). %% External exports start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). stop() -> case whereis(?MODULE) of Pid when is_pid(Pid) -> exit(Pid, normal), ok; _Other -> not_started end. %% supervisor callbacks init([]) -> {ok, { {one_for_one, 2000, 1}, [ <+CURSOR+>{Id, {Module, Function, Args}, permanent, infinity, supervisor, []}, {Id, {Module, Function, Args}, permanent, brutal_kill, worker, []} ] }}.
「<+FILE NAME ROOT+>」は、ディレクトリと拡張子を除いたファイル名に置換されるタグで、「<+CURSOR+>」は、ファイルを新規に開いた際のカーソル位置となるタグです。
んー、便利だ!
- 104 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=gDM&q=mysql+cp932&btnG=検索&lr=lang_ja
- 37 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLJ_ja&q=yum+ローカル環境
- 28 http://www.google.co.jp/search?q=kademlia&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 22 http://blog.blueblack.net/item_164
- 21 http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja-JP-mac:official&hs=8Mo&q=twitter+mac+widget&revid=1631960898&ei=4sDYSZ1R0pSQBealsPoJ&sa=X&oi=revisions_inline&resnum=0&ct=top-revision&cd=4
- 14 http://reader.livedoor.com/reader/
- 13 http://www.serendip.ws/archives/1720
- 12 http://blog.blueblack.net/item_133
- 12 http://d.hatena.ne.jp/
- 12 http://vim.g.hatena.ne.jp/keyword/autocomplpop.vim