LinuxでSQLを整形したくってVimのSQLUtilitiesを使ってみた
手元のPCはFedora 15、開発サーバーはCentOS 5.6と、Linux環境で開発をしてるわけですが、CatalystでDBIC_TRACE=1
してる時に出てくるSQLを、整形する手段がなかなか見つけられなくて困りました。Windowsだとフリーウェアの文化のおかげで、この手のツールは探せば何かしらみつかります*1。Linuxでもオープンソースの文化で、SQLの整形なんてすぐ見つかるだろと思ってたら、意外にも全然見つからなかった。そこで、Vimのプラグイン*2を教えてもらったので使って見ました。
使い方
:SQLUFormatter
整形したいSQLをvimで開くか、空で開いてSQLを張って、上記コマンドで整形出来ます。
Suggested Mappings: vmap <silent>sf <Plug>SQLU_Formatter<CR> nmap <silent>scl <Plug>SQLU_CreateColumnList<CR> nmap <silent>scd <Plug>SQLU_GetColumnDef<CR> nmap <silent>scdt <Plug>SQLU_GetColumnDataType<CR> nmap <silent>scp <Plug>SQLU_CreateProcedure<CR>SQLUtilities - SQL utilities - Formatting, generate - columns lists, procedures for databases : vim online
ドキュメントには、このマッピングを推奨してるらしいけど、.vimrcに書いて見たけど使い方がさっぱり分かりません。vmapってヴィジュアルモードでのマッピングだよね?ヴィジュアルモードでsf
って押してみたけど、特に何も起きない・・・。よく分からないので、マッピングは諦めました。
導入
pathogen.vimを使ってるので、SQLUtilities - SQL utilities - Formatting, generate - columns lists, procedures for databases : vim onlineから最新のをダウンロードして~/.vim/bundle/
に置くだけでした。解凍して出来たディレクトリを置いて、~/.vim/bundle/sqlutil_400/
て感じにしました。
あと、Align - Help folks to align text, eqns, declarations, tables, etc : vim onlineに依存してるらしく、これも入れる必要があります。vimballというものらしく、若干pathogenと相性がよくないっぽい。
$ vi Align.vba.gz :let g:vimball_home = "/home/myuser/.vim/bundle/Align/" :source %
vimプラグインの管理をpathogen.vimにした - WebCrawler2
検索したら入れ方はすぐ出てきたので、この3行で入りました。このエントリーはpathogenについても説明されてます。ホームディレクトリを表す~
でパス指定したら、なんか書き込めないと出て、入れられなかったので注意。
その他
インデント整形機能
gg=G
Vimにはインデントを揃える機能があります。このコマンドでファイルの先頭から最後まで、整形が出来るんですが、インデントを揃えるだけなので、1行になったSQLには無力でした。
SQLUtilities
SQLUtilitiesは名前のとおりユーティリティなので、整形以外にも機能があるみたいです。でも、整形したかっただけだし、前述のとおりマッピングうまくいかないし、とりあえず整形以外は使ってません。
環境
Linux | Fedora 15 |
Vim | 7.3.138 |
SQLUtilities | 4.00 |
Align | 35/41 |
*1:http://www.geocities.jp/rgyxd366/ これがシンプルでお気に入りでした