免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1214 | 回复: 0
打印 上一主题 下一主题

我编pl/sql程序专用的vim配置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-14 09:23 |只看该作者 |倒序浏览
个人觉得用vim编写pl/sql最为方便,写出的代码可读性非常之好,特别是保留字节大写,字符串自动代换等功能,真是太好玩了。如果把matchit.vim(从vim老家下载)放入plugin目录,编程过程中查找保留字节的匹配(比如begin end; if end if 等)更为方便。
"韦传仁用于编写pl/sql的vim配置文件
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
silent execute '!d:Vimvim63diff ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3
endfunction
if version > 600
set helplang=cn
endif
set nobackup
set ts=4
set expandtab
set ignorecase
set filetype=sql
set showmatch
set number
"我是色弱。
"colorscheme evening
iab begin BEGIN
iab declare DECLARE
iab end END
iab if IF
iab msg DBMS_OUTPUT.PUT_LINE
iab select SELECT
iab from FROM
iab cursor CURSOR
iab pragma PRAGMA
iab exception EXCEPTION
iab when WHEN
iab then THEN
iab loop LOOP
iab while WHILE
iab update UPDATE
iab delete DELETE
iab insert INSERT
iab values VALUES
iab long LONG
iab rownum ROWNUM
iab where WHERE
iab type TYPE
iab rowtype ROWTYPE
iab for FOR
iab else ELSE
iab to_char TO_CHAR
iab sysdate SYSDATE
iab varchar2 VARCHAR2
iab char CHAR
iab number NUMBER
iab boolean BOOLEAN
iab dual DUAL
iab dbms_utility DBMS_UTILITY
iab rowidtochar ROWIDTOCHAR
iab variable VARIABLE
iab null NULL
iab date DATE
iab default DEFAULT
iab not NOT
iab no_data_found NO_DATA_FOUND
iab others OTHERS
iab exception_init EXCEPTION_INIT
iab in IN
iab is IS
iab elsif ELSIF
iab nvl NVL
iab procedure PROCEDURE
iab function FUNCTION
iab integer INTEGER
iab and AND
iab or OR
iab intersect INTERSECT
iab minus MINUS
iab union UNION
iab record RECORD
iab exit EXIT
iab raise RAISE
iab open OPEN
iab isopen ISOPEN
iab fetch FETCH
iab close CLOSE
iab notfound NOTFOUND
iab into INTO
iab found FOUND
iab rowcount ROWCOUNT
iab count COUNT
iab enable ENABLE
iab ref REF
iab return RETURN
iab by BY
iab index INDEX
iab binary BINARY
iab table TABLE
iab of OF
iab binary_integer BINARY_INTEGER
iab add_months ADD_MONTHS
iab last_day LAST_DAY
iab round ROUND
iab trunc TRUNC
iab months_between MONTHS_BETWEEN
iab out OUT
iab commit COMMIT
iab replace REPLACE
iab create CREATE
iab having HAVING
iab group GROUP
iab sum SUM
iab allfee fee1+fee2+fee3+fee4+fee11+fee12+fee13+fee14
iab decode DECODE
iab substr SUBSTR
iab lpad LPAD
iab like LIKE
iab ceil CEIL
iab ltrim LTRIM
iab rtrim RTRIM
iab max MAX
iab min MIN
iab avg AVG
iab on ON
iab trigger TRIGGER
iab each EACH
iab row ROW
iab new NEW
iab before BEFORE
iab after AFTER
iab rem ----
iab qq SELECT * FROM
"空行
iab spacel                                                                  --NullLine
iab remn ------------------------------------------------------------------
iab remm ------******************************************************------
iab exists EXISTS
iab sqlcode SQLCODE
iab sqlerrm SQLERRM
“这些是我常用到的表
iab bbs bb_service_relation_t
iab bbms bb_month_service_relation_t
iab ura user_record_array
iab pmon TO_CHAR(ADD_MONTHS(SYSDATE,-1),'YYYYMM')
"消除铃声
set vb t_vb=".
"最大化窗口
au GUIEnter * simalt ~x



"配置文件至此结束。
下面是用vim编写的代码的样子,看上去挺美。
CREATE OR REPLACE FUNCTION Hnrpt_Get_Last_Pay_Date_F (user_id_in IN NUMBER,
                                                      begin_date_in IN VARCHAR2,
                                                      end_date_in   IN VARCHAR2
                                                     )
--韦传仁 20051019
RETURN VARCHAR2
IS
   CURSOR get_varchar_date_cur IS
   SELECT * FROM hnrpt_wcr_yyyymm_t
   WHERE  char_date>=begin_date_in
   AND    char_date0
          AND   pay_way NOT IN(52,53,9,1,24,25,26,35,27,54);
          IF vd_pay_date_f IS NULL THEN
               vs_last_pay_date_f:=NULL;
          ELSE
              vs_last_pay_date_f:=TO_CHAR(vd_pay_date_f,'YYYYMM');
          END IF;
       ELSE
          dsql:='SELECT COUNT(*) FROM bf_pay_fee_t
              partition(PART_501_'||i.char_date
              ||') WHERE (user_id=:id)
                 AND city_code='||'''501'''||
                 ' AND  fee_date='||'''AAAAAA'''||
                 ' AND  NVL(pay_fee,0)>0
                   AND  pay_way NOT IN(52,53,9,1,25,26,35,27)
            AND ROWNUM=1';
          EXECUTE IMMEDIATE dsql INTO vn_hit_count USING user_id_in;
          IF vn_hit_count>0 THEN
          vs_last_pay_date_f:=i.char_date;
           EXIT;
          ELSE
           vs_last_pay_date_f:=NULL;
          END IF;
       END IF;
   END LOOP;
   RETURN vs_last_pay_date_f;
END;



我的vim7的配置
http://blogimg.chinaunix.net/blog/upfile/070114204549.rar


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12178/showart_61405.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP