読者です 読者をやめる 読者になる 読者になる

sifue's blog

プログラマな二児の父の日常

秀丸からVimへ移行中:SQLをJavaの文字リテラルに変換するVimスクリプト

かれこれ高校時代、1999年ぐらいからWindowsでは秀丸を12年近く愛用し、Macでは最初はmi、今はCotEditorを愛用してきた自分ですが、ついに今週テキストエディタVimに改宗することに決めました。


そんなこんなで、只今、秀丸で作った資産を少しずつVimに移行中です。
まずはその第一弾でSQLJavaの文字リテラルに変換するVimスクリプトです。

"SQLのJava文字リテラルへの整形
function! SQLToJava()
  %s/^\(.\+\)$/"\1 " \+/g
  normal $xxggVGy
  echo "Convert to Java String is finished and yanked."
endfunction
command! Sqltoj :call SQLToJava()

function! SQLFromJava()
  %s/^[ \t]*"\(.\+\) " *+*$/\1/g
  normal ggVGy
  echo "Convert from Java String is finished and yanked."
endfunction
command! Sqlfromj :call SQLFromJava()

使い方は簡単。GVimでは$VIM/vimrc_local.vimか$HOME/.vimrcに追記し、vimを起動したら、ノーマルモードで:Sqltojと入力してエンターを押せば、

SELECT USERNAME
FROM DBA_USERS

"SELECT USERNAME " +
"FROM DBA_USERS "


と変換されます。なおノーマルモードで:Sqlfromjと入力すると元に戻ります。Vimスクリプト秀丸マクロ並にいろいろと記述できるようなので、今後も少しずつ移行いしていこうと思っています。


ちなみにここからは秀丸からVimに移行するにあたって思うところを書こうと思います。


普段の自分の開発環境は、自分はJavaEclipse+CVS|SVNJavaScriptRubyPHPAptana+GITを使っておりゴリゴリのIDEプログラマで、EclipseRCPのプラグイン開発者でもあるのですが、最近新しい言語CoffeeScriptやGO言語を触ろうと思ったりした時に、まあ当たり前のように開発環境がないわけです。
そんな時シンタックスハイライトやタグジャンプなどの環境がまず提供されるのがVimだったりします。
そんな時に自分で作れるからといって頑張って自分で非公式のEclipseプラグインを作って頑張るのもバカバカしいので、やっぱりVimかなぁという感じになります。
ちなみに過去、VimLinux上でcronやhttpd.confなんかの設定ファイルをいじるぐらいにしか使って来なかったわけですが、この1週間ほどでキーバーインドを体に慣れさせています。
そんなこんなで、只今、秀丸で作った資産を少しずつVimに移行中です。現在WindowsではKaoriyaさんのGVimMacではMacVimを利用しています。やっぱりブラウザからのコピペがやりにくいと辛いのと描画の遅延が少ないのでGVimです。

  • 香り屋

http://www.kaoriya.net/

  • macvim-kaoriya

http://code.google.com/p/macvim-kaoriya/


なお、キーバーインドを覚えるに当たって

  • [vim][小ネタ] vimで効率的にコードを書くための小技

http://d.hatena.ne.jp/bonar/20070415/1176651778

http://www.namaraii.com/files/vim-cheatsheet.pdf
以上を利用させてもらっています。個人的にすこぶる効率上がる!と思うのはやはりq:、q/、q?を使ったクエリの履歴表示、編集機能でしょうか。これがマウスを使わずにできるのが良いです(コンボボックスから履歴を探すの結構疲れますよね)。ただ中々、ノーマルモードと挿入モード、ヴィジュアルモードの切替には慣れません。ヴィジュアルモードだったのに入力しちゃったりとかが多々、Esc切り替えとCtrl+[切り替えどっちを使うか悩みどころですが、自分が矢印キーを使うことが多いので本当に悩ましいところです。
最終的にホームポジションから全く動かさないで高速に編集する熟練Vimmerになりたいところですがそこまで到達できるのかどうかw
こうするとVimスキル上がるよ、このプラグイン入れると効率あがるよなどあったら、ぜひアドバイス頂ければと思います。


ではでは。