2007年6月26日

整合 SQLPLUS & VIM

习惯是一种很有意思的事情:有人把 Linux 改成 windows 的操作方式,觉得这样更易用;有人在 Windows 下面加入 linux 的功能,这样顺手点。
在 informix 的 dbaccess 下习惯了整合 vi 进行编辑,现在进到 sqlplus 第一句话就是“怎么不能用 VI 编辑?”。没办法,习惯了 VIM,不扩展一下真的没法用!

在网上查了一下,大致方法有:


1、在 sqlplus 里设置环境变量 set editor=vim

可以每次在 sqlplus 里输入,或写在 $ORACLE_HOME/sqlplus/admin/login.sql里面每次启 sqlplus 时自动调用。也可以写在 .bashrc 里面,加一句 export EDITOR=vim

然后在 sqlplus> 提示符下输入 edit nn.sql 就调用 vi 编辑 nn.sql 文件了
编辑完毕以后 :wq 保存退出,用 @nn 可以调用 nn.sql ( edit 可以用缩写 ed 代替)

其原理说白了就是调用 vi 编辑当前目录下的 nn.sql 文件(因为文件名没有带路径),保存以后用 @nn 命令调用当前目录 nn.sql

这种方法很原始,最不爽的就是会在当前目录下产生很多 SQL 文件,有用没用的都混在一起了。

参考自:http://www.oracle.com/technology/global/cn/pub/articles/kalosi_vim.html (这篇文章实在头重脚轻,长篇大论讲VIM,讲得也不怎么样,只在结尾提了一下 SQLPLUS 设置)



2、直接在 VIM 里面调用 sqlplus
在shell环境下启动 vim 编写 nn.sql ,如
$> vi nn.sql
select * from tab;
然后在 VIM 里面执行命令 : :%!sqlplus -s system/passwd ,如果有错误信息或执行产生的显示数据都会进入到当前文本。

原理:
sqlplus -s user/pass 用 -s 参数屏蔽 sqlplus 的版本信息,后面跟帐号和密码
!command 是 vim 执行外部命令的方式,如 !ls 就是在 vim 里面调用 ls 命令列出工作目录下的文件
% 号是命令执行的范围,%表示全部。当然也可以用 : :3,15 !sqlplsu -s user/pass 来调用 sqlplus 执行第 3~15 行的SQL语句

这种方法很值得一试:首先,工作环境完全变成 vim,对于熟悉 VIM 的用户来说可以在 VIM 里输入、执行SQL,然后操作结果进入到了 VIM 里面可以接着用 VIM 查看、编辑、过滤,一箭双雕

参考:http://www.oracleadvice.com/Tips/UXvi-sqlplus.htm (很不错的oracle技术网站,文章都是短小精干)

没有评论: