UltraEdit是程序员的完美情人,我就不赘述其强大易用了,一句话,谁玩谁知道。本文旨在帮助你个性化配置UE,以便在写Hive QL代码时能够更高效舒畅。具体而言,实现以下目的:
* 对Hive QL代码实现折叠,效果如图1。
或者像图2这样的:
折叠后视图如3:
图3
比如上面两个表在函数列表中显示:
图4
我们已经建好了t_ue_syntax和t_ue_syntax_tmp1两张表了,当我们要使用这两张表时,输入表名的开头,即可自动给出全名。
图5
接下来我们通过配置实现以上三类效果,首先从UE的语法高亮文件谈起。
创建语法高亮文件
你肯定不希望还像对着个记事本一样来使用UE吧?那么我们首先要让代码鲜艳起来,各关键字应泾渭分明,输入错误可以及时发现。为此,像大多数IDE一样,UE提供了语法着色功能,这是通过调用语法高亮文件来实现的,我们可以为不同类型(文件后缀)的文档配置不同的着色方案。UE内置了十多种语法高亮文件,这些文件存放在特定路径下,你应该要知道这个路径是什么。通过“高级-配置-编辑器显示-语法着色”,在“文档的完整目录名称”下的文本框中可以看到语法高亮文件的完整路径:
C:\Users\<user_account>\AppData\Roaming\IDMComp\UltraEdit\wordfiles
该目录下的所有.uew文档都会被当成语法高亮文件,如图6。
关于wordfile的官方介绍看这里:
http://www.ultraedit.com/downloads/extras/wordfiles.html
我们把Hive QL的代码文件后缀设置为.hql。现在我们要为后缀为这类文档新建一个语法高亮文件,可以选择在wordfile.uew中增加一种着色类型,亦可以单独创建一个文件。比如我们创建一个名为hiveql.uew的文件,为所有后缀为.hql的文档进行语法着色。由于Hive QL语法和MySql语法类似,我们偷个懒,直接拷贝mysql.uew的内容到hiveql.uew中,再对其作修改。
在修改以前,我们来看看如记事本般的代码(假设文件名为test.hql),它是这样的:
/L13"MySQL 5.1" SQL_LANG Nocase Line Comment = # Line Comment Alt = -- Block Comment On = /** Block Comment Off = **/ Escape Char = \File Extensions = SQL
修改为:
/L21"Hive QL" HQL_LANG Nocase Line Comment = # Line Comment Alt = -- Block Comment On = /** Block Comment Off = **/ Escape Char = \File Extensions = HQL
保存后重新启动UE,注意这时我们的test.hql代码已经变成:
上述代码中,drop table等关键词显示为橙色,not显示为蓝色,而string则显示为红色,这是由/Cn开头的代码块决定的:
/C1"Functions"
……
/C2"Variable Types"
……
/C3"Reserved Words"
……
/C4"Operators"
……
代码折叠
在hiveql.uew中找到以下两行:/Open Fold Strings = "{"
/Close Fold Strings = "}"
这一配置的意思是,“{”和“}”之间的代码作为一个折叠。我们将其修改为
/Open Fold Strings = "create table" "create external table"
/Close Fold Strings = ";"
注意到不同的open fold string之间用空格隔开。
函数列表框列出表名
UE的正则表达式与我们在java、js中见过的不一样,具体可参考帮助文档。为了将建表语句的表名提取出来作为函数名,我们在uew文档中添加以下几行:/Function String 1 = "%[ ^t]++create table if not exists ^(*^)([ ^t]++$"
/Function String 2 = "%[ ^t]++create table if not exists ^(*^)as[ ^t]++$"
/Function String 3 = "%[ ^t]++create external table if not exists ^(*^)([ ^t]++$"
/Function String 4 = "%[ ^t]++create external table if not exists ^(*^)as[ ^t]++$"
自动补全表名
选择“高级-配置-编辑器-自动完成”,勾选“自动显示‘自动完成’对话框”,并在其中定义好“当输入x个字符”时,自动补全。
图9