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+>」は、ファイルを新規に開いた際のカーソル位置となるタグです。
んー、便利だ!