[20140829]在vim中使用align.txt

[20140829]在vim中使用align.txt

--经常上一些网站,发现一些帖子贴出的sql的执行计划出现参差不齐的情况,很难看懂.
--有一次我通过QQ解决问题,对方贴出执行计划,也是这种情况,本来这些执行计划就很复杂,加上不对齐,确实影响工作与解决问题的心情.

--我想起在vim下格式化sql语句时,需要安装align插件,应该使用它能够解决问题.

--下载安装align插件很简单。

1.ALign 插件:
http://www.vim.org/scripts/script.php?script_id=294
http://www.vim.org/scripts/download_script.php?src_id=19633

安装很简单:
vim Align.vba.gz
:so %
:q

--注意要删除旧的AlignMaps.vim文件,不要map会冲突!新的改名为AlignMapsPlugin.vim。

2.查看相关文档:
:help align

3.文档写的很复杂,而我的需求很简单,就是显示执行计划要美观.通过例子来讲解:

PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  cj135jhhjjzsd, child number 0
-------------------------------------
select dept.dname,emp.* from dept,emp where dept.deptno=emp.deptno and
dept.deptno=10

Plan hash value: 568005898

---------------------------------------------------------------------------------------------------------------
|Id|Operation|Name|Starts|E-Rows|Cost(%CPU)|A-Rows|A-Time|Buffers|
---------------------------------------------------------------------------------------------------------------
|0|SELECT STATEMENT||1||5(100)|3|00:00:00.01|9|
|1|NESTED LOOPS||1|3|5(0)|3|00:00:00.01|9|
|2|TABLE ACCESSBY INDEX ROWID|DEPT|1|1|2(0)|1|00:00:00.01|2|
|*3|INDEX UNIQUE SCAN|PK_DEPT|1|1|1(0)|1|00:00:00.01|1|
|*4|TABLE ACCESS FULL|EMP|1|3|3(0)|3|00:00:00.01|7|
---------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("DEPT"."DEPTNO"=10)
   4 - filter("EMP"."DEPTNO"=10)

a.操作如下,移动id那一行.ma,做标记a.
b.移动到*4那一行.
c.定义格式化参数:
:AlignCtrl lrllrrrrrrrrrrr
--说明实际上控制格式化显示样式,很容易猜测,l表示left靠左边显示,r表示right靠右边显示,另外注意执行计划开始就是分隔符号|
--*2 实际上是第2个字段.这里就是r,表示这列靠右边显示.还有:表示后面的列不格式化.

d.格式化:

:'a,.Align |

--结合我重新映射删除空格操作很快的. 或者开始操作前删除仅仅有横线那一行。
--链接:http://blog.itpub.net/267265/viewspace-1244321/

4.效果如下:

---------------------------------------------------------------------------------------------------------------
| Id | Operation                  | Name    | Starts | E-Rows | Cost(%CPU) | A-Rows |      A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT           |         |      1 |        |     5(100) |      3 | 00:00:00.01 |       9 |
|  1 | NESTED LOOPS               |         |      1 |      3 |       5(0) |      3 | 00:00:00.01 |       9 |
|  2 | TABLE ACCESSBY INDEX ROWID | DEPT    |      1 |      1 |       2(0) |      1 | 00:00:00.01 |       2 |
| *3 | INDEX UNIQUE SCAN          | PK_DEPT |      1 |      1 |       1(0) |      1 | 00:00:00.01 |       1 |
| *4 | TABLE ACCESS FULL          | EMP     |      1 |      3 |       3(0) |      3 | 00:00:00.01 |       7 |
---------------------------------------------------------------------------------------------------------------

--这样就美观了.以下是实际的显示效果:
---------------------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name    | Starts | E-Rows | Cost (%CPU)| A-Rows |   A-Time   | Buffers |
---------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |         |      1 |        |     5 (100)|      3 |00:00:00.01 |       9 |
|   1 |  NESTED LOOPS                |         |      1 |      3 |     5   (0)|      3 |00:00:00.01 |       9 |
|   2 |   TABLE ACCESS BY INDEX ROWID| DEPT    |      1 |      1 |     2   (0)|      1 |00:00:00.01 |       2 |
|*  3 |    INDEX UNIQUE SCAN         | PK_DEPT |      1 |      1 |     1   (0)|      1 |00:00:00.01 |       1 |
|*  4 |   TABLE ACCESS FULL          | EMP     |      1 |      3 |     3   (0)|      3 |00:00:00.01 |       7 |
---------------------------------------------------------------------------------------------------------------

--对比主要差别在与operation没有缩进。其他基本一样。

5.最后补充AlignCtrl中的:
Statistics
----------------------------------------------------------
0  recursive calls
0  db block gets
9  consistent gets
0  physical reads
0  redo size
1240  bytes sent via SQL*Net to client
520  bytes received via SQL*Net from client
2  SQL*Net roundtrips to/from client
0  sorts (memory)
0  sorts (disk)
3  rows processed

:AlignCtrl r:
:'a,.Align " "

--显示如下,这样仅仅对第一个空格前的列格式化.

Statistics
----------------------------------------------------------
   0   recursive calls
   0   db block gets
   9   consistent gets
   0   physical reads
   0   redo size
1240   bytes sent via SQL*Net to client
520   bytes received via SQL*Net from client
   2   SQL*Net roundtrips to/from client
   0   sorts (memory)
   0   sorts (disk)
   3   rows processed

6.还有许多功能,但是上面的这些对我已经足够了.做一个记录,需要了解更多:
:help align

时间: 2024-07-30 10:50:46

[20140829]在vim中使用align.txt的相关文章

[20170617]vim中调用sqlplus.txt

[20170617]vim中调用sqlplus.txt --//以前写过一篇emacs下调用sqlplus的文章,一直想学emacs,受限制自己掌握vim,对学习它没有兴趣,原链接如下: --//http://blog.itpub.net/267265/viewspace-1309032/ --//实际上vim也有插件连接数据库,我觉得不好用,一直没这样用. --//今天在整理vim相关设置时,发现我自己以前也定义一些方法,自己也拿出来分享: noremap  <Leader>q1 Yp!!s

[20170617]vim中使用bc计算器.txt

[20170617]vim中使用bc计算器.txt --//我以前也写一个脚本做行计算功能以及10,16进制的转换功能,简单一点不做复杂检测,如下: noremap  <Leader>cc Yp!!bc -lq<CR>kA = <ESC>J noremap  <Leader>ch YpIobase=16;<ESC>!!bc -lq<CR>kA = 0x<ESC>Jxguu noremap  <Leader>cd

[20170616]vim中使用bc计算器.txt

[20170616]vim中使用bc计算器.txt --//前几天修改bccalc插件,它使用bc在vim做各种运算,在windows下会遇到许多奇怪的问题(别人给我反馈的) --//比如^的解析.我发现在windows下注解 " escape chars for shell " let str = escape (str, '*();&><|^') --//如上2行问题就可以解决,但是在运算里面包含括号问题依旧.实际上vim 7.4版本依旧存在问题,很奇怪vim

[20121207]vim中使用bc做10与16进制计算.txt

[20121207]vim中使用bc做10与16进制计算.txt 工作中需要经常做10与16进制的转换,我记得以前有一个插件与vim结合可以实现简单的计算功能,比在平时输入是时输入ctrl+r=计算式(在插入模式)要方便一些,我个人计算时经常使用.链接如下: http://www.vim.org/scripts/script.php?script_id=219http://space.itpub.net/267265/viewspace-82924 实际上作者给出的例子,好像也可以实现,我感觉不

vim中使用正则表达式

一.使用正则表达式的命令 使用正则表达式的命令最常见的就是 / (搜索)命令.其格式如下: /正则表达式 另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正则表达式替换成第二个//之间的字符串. :s/正则表达式/替换字符串/选项 在学习正则表达式时可以利用 / 命令来练习. 二.元字符 元字符是具有特殊意义的字符.使用元字符可以表达任意字符.行首.行 尾.某几个字符等意义. 元字符一览 元字符 说明 . 匹配任意一个字符 [abc]匹配方括号中的任意一个字符.可以使用-表示字符范围

[20121217]vim ctrl-A in windows.txt

[20121217]vim ctrl-A in windows.txt 在windows下,使用vim,ctrl+a表示全选,而不是给一个数值加1. 执行如下: :map x         * ggVG s         * gggHG o         * gggHG n         * gggHG 可以发现在windows下被重新定义,如果要保留原有的功能,必须清除这些定义. 另外一个折衷的方法是在mswin.vim文件中加入如下内容: noremap " CTRL-A is Se

如何在 vim 中更好的编辑 java 文件

这次介绍一下如何在 vim 中更好的编辑 java 文件.作者: camry.wu@gmail.com 1. javabrowser 编辑类文件时, 类资源树是个有用的东西, 可以把类的成员, 方法等等很直观的 显示出来. 在 vim 中也可以实现好像 vc, jbuilder 那样的类资源树, 当然比 那些会简单些, 不过也够好用的了. 就是用 javabrowser.vim 这个脚本实现的. 先到 vim online 去找到这个脚本文件.(在这还能找到许多有用的其他脚本) 然后在 goog

vim中的文本对象及相关插件

最近在个人博客上 http://foocoder.com  每天都会介绍一个vim插件,想起来园子也好久没更新了,也来更新一篇. 今天按读者留言的要求,介绍下文本对象.同时还会介绍我在用的几个文本相关的插件. 所谓文本对象,简单来说就是以一定标准分隔符来标识一段文本,比如一个单词,一句话,一段话. 使用文本对象后你会发现你在vim中的移动和操作速度提升了不是一点半点. 在vim中编辑命令的结构如下: <number><command><text object or motio

如何在vim中设置tab键变得更简单的操作

  在vim中的可以设置许多的个性键,其中的tab键就是其中之一,但是在vim 中使用着tab键是很是麻烦,是退8个空格的,感觉比较浪费空间.那么要怎么的设置才会更加的简单起来呢!现在一起去看看吧! 百度发现vim的所有个性化设置都是通过一个叫.vimrc的文件控制的,即可以通过配置.vimrc这个文件,告诉vim如何个性化为我们进行服务. 第一个问题是.vimrc文件在哪?locate发现本地没有这个文件,百度发现这个文件一般应该放在用户的根目录下. 于是:echo $HOME,由于我是用ro