正規表現でメンバとgetterとsetterメソッドを作成

http://d.hatena.ne.jp/yzn/20040120 の続きです。

たとえばこんな感じのデータからメンバとゲッタメソッドをセッタメソッド作成したい場合は・・・

電話番号 telNo
郵便番号 postCode

viで以下のコマンドを発行すると

:%s/\(.*\) \(.\)\(.*\)/#Member#\1 \2\3\r#GetterHead#\1\r#GetterBody#\u\2\3 \2\3\r#SetterHead#\1\r#SetterBody#\u\2\3 \2\3\r/
:%s/#Member#\(.*\) \(.*\)/\/** \1 **\/\rprivate String \2 = null;/
:%s/#GetterHead#\(.*\)/\/**\r * \1を返却します。\r * @return \1\r **\//
:%s/#GetterBody#\(.*\) \(.*\)/public String get\1() {return \2;}/
:%s/#SetterHead#\(.*\)/\/**\r * \1を設定します。\r * @param value \1\r **\//
:%s/#SetterBody#\(.*\) \(.*\)/public void set\1(String value) {\2 = value;}/
:%s/^/\t\t/

こんな感じになる・・・

                /** 電話番号 **/
                private String telNo = null;
                /**
                 * 電話番号を返却します。
                 * @return 電話番号
                 **/
                public String getTelNo() {return telNo;}
                /**
                 * 電話番号を設定します。
                 * @param value 電話番号
                 **/
                public void setTelNo(String value) {telNo = value;}

                /** 郵便番号 **/
                private String postCode = null;
                /**
                 * 郵便番号を返却します。
                 * @return 郵便番号
                 **/
                public String getPostCode() {return postCode;}
                /**
                 * 郵便番号を設定します。
                 * @param value 郵便番号
                 **/
                public void setPostCode(String value) {postCode = value;}

やっぱり vivi だと大文字に変換する\uがうまく動作しないみたい。cygwinvim がお勧め。