2011/10/28


追記:template-vimはthincaさんの物と名前がバッティングしたので、「音速でコーディング出来る」と言う意味でsonictemplate-vimに改名しました。

既に似たのはあると思うので車輪の再発明臭いけど、僕の好みの奴は見た事無かったので自分で書いた。

欲しかった要件としては
  • 同じファイルタイプだけど、使いたい雛形が数パターンある
  • 初期カーソル位置とか欲しい
  • Perlで「package Foo;」とか埋めてくれたら幸せ
  • Go言語でライブラリ書くときとmain書くときで雛形違うよね
みたいなところ。
mattn/sonictemplate-vim - GitHub

template chooser for vim

https://github.com/mattn/sonictemplate-vim
これを使って # vim foo.pl
と新しいPerlスクリプトファイルを開き :Template <TAB> すると
completing templates
みたいに何個か選べる様になる。scriptを選ぶと use strict;
use warnings;
use utf8;

|
|はカーソルの位置
こんなソースが出て # vim lib/Foo/Bar.pm
の様にPerlのパッケージを開きpackageを選択すると package Foo::Bar;

use strict;
use warnings;
use utf8;

|

1
こんな感じになる。なお、どちらも|の位置がカーソル位置になる。 テンプレートファイルはtemplateフォルダに、名前.ファイルタイプの形式で格納されていて {{_name_}}が拡張子なしのファイル名、{{_cursor_}}がカーソル位置、{{_expr_:XXX}}XXXの位置に好きな式が書ける様になっている。
例えばPerlのパッケージであれば、以下の様にバッファファイル名/path/to/module/lib/Foo/Bar.pmからパッケージ名Foo::Barを作り出している。
package {{_expr_:substitute(substitute(substitute(expand('%'), '.*lib[\\/]', '', 'g'), '[\\/]', '::', 'g'), '\.pm$', '', 'g')}};

use strict;
use warnings;
use utf8;

{{_cursor_}}

1
いまの所

C言語のmainソース

#include <stdio.h>

int
main(int argc, char* argv[]) {
  {{_cursor_}}
  return 0;
}

C++のmainソース

#include <iostream>
#include <string>

int
main(int argc, char* argv[]) {
  {{_cursor_}}
  return 0;
}

Go言語のmainソース

package main

func main() {
    {{_cursor_}}
}

Go言語のパッケージソース

package {{_name_}}

{{_cursor_}}

Perlのパッケージソース

package {{_expr_:substitute(substitute(substitute(expand('%'), '.*lib[\\/]', '', 'g'), '[\\/]', '::', 'g'), '\.pm$', '', 'g')}};

use strict;
use warnings;
use utf8;

{{_cursor_}}

1

Perlのスクリプトソース

use strict;
use warnings;
use utf8;

{{_cursor_}}

Perlのテストスクリプトソース

use strict;
use warnings;
use utf8;
use Test::More;

{{_cursor_}}

おまけでREADME.mkd

{{_expr_:expand("%:p:h:t")}}
{{_expr_:repeat("=", len(expand("%:p:h:t")))}}

Usage:
------
{{_cursor_}}

Requirements:
-------------

Install:
--------

License:
--------

Author:
-------

既にファイルに何かが入力されている時には適用出来ない様になっています。
なお、雛形を募集中なのでこれも入れて欲しい!ってのがあったらgithub上でforkしてpullリクエスト送って下さい。
Posted at by




昨日書いたsonictemplate-vimを使えば...
mattn/sonictemplate-vim - GitHub

sonictemplate chooser for vim

https://github.com/mattn/sonictemplate-vim
注意:DBは既に用意されている物とする
以下をやるにはオプションの設定が必要だったのでデフォルトで動作する様にした
template-vimはthincaさんの物と名前がバッティングしたので、「音速でコーディング出来る」と言う意味でsonictemplate-vimに改名しました。

よーいどん

# vim foo.pl
起動したら :Template script と書いてドーン use strict;
use warnings;
use utf8;

_
_はカーソル位置
ここで use DBI;
を足しておこう。さて :Template dbi-connect-sqlite でドーン use strict;
use warnings;
use utf8;
use DBI;

my $dbh = DBI->connect("dbi:SQLite:dbname=_");
$dbh->disconnect;

SQLiteのDBファイル名を書く部分にカーソルが移動しているので./foo.dbとタイプする。その後一行下に移動して :Template dbi-prepare でドーン use strict;
use warnings;
use utf8;
use DBI;

my $dbh = DBI->connect("dbi:SQLite:dbname=./foo.db");
my $sth = $dbh->prepare("_");
$sth->execute;
while (my @row = $sth->fetchrow_array) {
    # print join(', ', @row), "\n";
}
$dbh->disconnect;

SQLを書く書く部分にカーソルが移動しているのでselect * from priceとタイプ。コメントアウトを外して... use strict;
use warnings;
use utf8;
use DBI;

my $dbh = DBI->connect("dbi:SQLite:dbname=./foo.db");
my $sth = $dbh->prepare("select * from price");
$sth->execute;
while (my @row = $sth->fetchrow_array) {
    print join(''@row), "\n";
}
$dbh->disconnect;

おもむろにvim-quickrunでドーーーン!
みかん, 250
りんご, 100
ってなればいいなーって話です。
Posted at by



2011/10/27


Zen-Codingの仕様はバージョン0.7がリリースされているのだけど、ちょっと腰が重くて対応が出来てません。
ただ、バージョン0.7の中で「これは便利だ」と思った機能があり、追加要望も受けていたので個別に対応した。
zencoding-vim-dollar-sharp

Upgraded “Wrap With Abbreviation” action

まず「Wrap With Abbreviation」がどういう物かというと、zencoding-vimのサイトの動画(?)を見て貰えれば分かるんですが、ビジュアル選択して「Tag: ul>li>*>img」みたいに入力すると、選択部分が包括されて展開されるという物。
今回これに「$#」というキーワードを使える様にした。

例えば
foo.jpg
bar.jpg
というテキストをビジュアル選択し
Tag: ul>li*>a[href="$#"]>img[src="$#"]+{ファイル名は $# です} とタイプする。すると
<ul>
 <li>
  <a href="foo.jpg"><img src="foo.jpg" alt="" />ファイル名は foo.jpg です</a>
 </li>
 <li>
  <a href="bar.jpg"><img src="bar.jpg" alt="" />ファイル名は bar.jpg です</a>
 </li>
</ul>
こんな感じに、「$#」が元々選択していたアイテムとして扱われて展開してくれます。
上記の様に画像ファイル名だけの一覧から、リスト形式のHTMLまで瞬時に変換出来ます。

よろしかったら試して下さい。

ZenCoding.vim : vim plugins for HTML and CSS hi-speed coding. : vim online

This is vim script support expanding abbreviation like zen-coding

http://www.vim.org/scripts/script.php?script_id=2981
vim.orgからダウンロードして貰っても良いですし、最新版でよければgithubから取得して下さい。
mattn/zencoding-vim - GitHub

zen-coding for vim: http://code.google.com/p/zen-coding/

https://github.com/mattn/zencoding-vim
Posted at by