Hatena::Groupvim

yamazakiccsのvim日記

やっぱinoremap <C-j> <ESC>でしょ。

2009-04-19

SQLでselect,whereなどの文字を大文字にする関数を書いた

14:35 | SQLでselect,whereなどの文字を大文字にする関数を書いた - yamazakiccsのvim日記 を含むブックマーク はてなブックマーク - SQLでselect,whereなどの文字を大文字にする関数を書いた - yamazakiccsのvim日記

vimグループ初投稿。

SQL書いているときに、普通はSELECT * FROM hoge WHERE id = 1;

みたいな感じでselect, whereなどを大文字で書くけど、

小文字で書いたあとに変換できた方が早いんじゃね?とかちょっと思って、書いてみた。

そして初vim scriptみたいなもの。

function Rep(str1, str2)
  let s:line = substitute(getline("."), a:str1, a:str2, "g")
  call setline(".", s:line)
endfunction

function SqlChar2UpperCase()
  call Rep("select ", "SELECT ")
  call Rep("update ", "UPDATE ")
  call Rep("delete ", "DELETE ")
  call Rep("from "  , "FROM ")
  call Rep("where " , "WHERE ")
  call Rep("inner " , "INNER ")
  call Rep("left "  , "LEFT ")
  call Rep("outer " , "OUTER ")
  call Rep("as "    , "AS ")
endfunction

使い方

map \sql :call SqlChar2UpperCase()<CR>

マップする。以上。

今後の展望

やりたいことが見つかったときに、徐々に書いていこうと思う。

thincathinca2009/04/19 15:40inoreabbrev select SELECT

などとしておくと便利かも、などと思った。
PHPなどに埋め込みたいときには邪魔になる可能性もあるけれど、
after/ftplugin/sql.vim などに書いておくのはアリかも。
(私はSQLを書く機会がないのでわかりませんが。)

yaemonyaemon2009/04/19 16:13保存時に変換するほうが好みかもしれない…

yamazakiccsyamazakiccs2009/04/19 16:20thincaさん

初めまして。コメントありがとうございます。
select->SELECTはhtml書くときにやだなぁって思って
あとで変換したほうがいいだろうとも思ったんです。

しかし、sql書くときはjavaなのでjava.vimに書いておけばいいですね。

yamazakiccsyamazakiccs2009/04/19 16:26yaemonさん

初めまして。コメントありがとうございます。

保存時に変換とかできるんですか!
(まぁvimにできないなんて愚問ですが)

たしかに:wとか連発するんでそれで変換されたら便利かもしれないですね。

yaemonyaemon2009/05/12 23:11あらためて、はじめまして。勝手な感想だけ述べてひと月近く放っておいてごめんなさい。

java から書く sql ならば、filetype を sqlj にするように
:autocmd BufNewFile,BufRead
で仕込んだほうが良さそうですね。( see $VIMRUNTIME/syntax/sqlj.vim )

するとキーワードを自力で並べなくとも、sqljKeyword と sqljOperator に収納されているので、それを取ってきてごにょごにょと…

することが可能ならばきれいに仕上がるなと思うだけで、コーディング実例は思いつかなかったりします。(自嘲)

yamazakiccsyamazakiccs2009/06/30 22:42>yaemonさん
こちらこそさらに二月放置してごめんなさい。。。
仕事が修羅場ってました(いいわけです。すいません。)
sqlj.vimみてみたんですけど、こんなものがあるなんて知らなかったです。

abbrevで入力変換で大文字にするのはいいんですけど
あんまり好みじゃないんですね、個人的に。(すいません、自分勝手で…

保存時に大文字置換は時間があるときやってみたいです。
今週ちょっとやれればいいな。

辞書からとってくるのとかも含めてやっぱvimscriptをちょっと
勉強してみるベき、俺。

PrasoonppPrasoonpp2013/03/04 19:43Well put, sir, well put. I'll cterialny make note of that.