2007年6月28日

用 VIM 管理 Oracle 的 SQL 历史

本文介绍一种方法,尝试用 VIM + SQLPLUS 的方法模拟出 informix 中 dbaccess 的 SQL 读入、运行功能。


可以试试在 vim 的 .vimrc 里面定义这样的热键:

nmap <silent> <F2> :1,.y<CR>:bel new<CR>p:%!sqlplus -s user/passwd<CR>

开一个 vim 写 SQL,写完以后按 F2 就可以从开头执行到当前行

---------解释------------
:1,.y 复制从第一行到当前行
:bel new 在当前窗口下方开个窗口(容纳运行结果)
p 把SQL粘到下面的窗口
:%!sqlplus -s user/passwd 把SQL传给 sqlplus 执行
---结果:上窗口显示编辑的SQL,下窗口显示运行结果---

(你也可以修改一下,改成按 Fx 执行全文,但是我觉得“执行到当前行”更灵活一些)

至于 SQL 历史保存的问题,我写了一个脚本,名字叫 d (很眼熟吧,infomix下用的这个名子,已经成了开 dbaccess 的专用缩写),内容如下:
biff@biffasus:~/bin$ cat d
#!/bin/bash

mkdir -p $HOME/.oracle
cd $HOME/.oracle

vi $HOME/.oracle

cd -

其实什么都没干,很神奇吧(不过你的VIM版本要支持目录编辑)
vim 带参数是目录时它会显示目录下的文件供你编辑,如下:

" ============================================================================
" Netrw Directory Listing (netrw v109)
" /domain/home/biff/.oracle
" Sorted by name
" Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,\.[a-np-z]$,*,\.info$,\.swp$,\.o$\.obj
" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:exec
" ============================================================================
../
./
@@test.sql
create_t_cif_info.sql
cur_speed_test.sql
zh16encoding.sql

看到没有,目录下的SQL显示给你供选择,可以直接对SQL文件删除、改名
用光标上移、下移选择文件,回车开始编辑SQL,光标移到最后一行按 F2 开始运行

没有评论: