UltraEdit個性化定製-Hive QL代碼摺疊、函數列表及自動補全

UltraEdit是程序員的完美情人,我就不贅述其強大易用了,一句話,誰玩誰知道。本文旨在幫助你個性化配置UE,以便在寫Hive QL代碼時能夠更高效舒暢。具體而言,實現以下目的:


* 對Hive QL代碼實現摺疊,效果如圖1。


圖1

或者像圖2這樣的:


圖2

摺疊後視圖如3:


圖3


* 在函數列表中列出Hive QL中的表名,點擊時可以定位。

比如上面兩個表在函數列表中顯示:


圖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。


圖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),它是這樣的:


圖7
首先,我們要讓hiveql.uew關聯到.hql文件中。hiveql.uew第一行是:
/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代碼已經變成:


圖8
如果沒有起作用,則在test.hql文件下,選擇“高級-配置-編輯器顯示-語法着色”,在“語言選擇”欄的下拉菜單中,選擇“Hive QL”,確定即可。
上述代碼中,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


快捷鍵

你可能需要一些快捷鍵,來使工作更爽,比如你需要用快捷鍵來實現代碼全部摺疊或全部展開的功能。選擇“高級-配置-鍵盤映射”,在“命令”框中找到ViewCollapseAll(全部摺疊)和ViewExpandAll(全部展開),可以使用已存在鍵,也可以爲其設置新的鍵。點擊“在編輯器顯示鍵盤映射”,可以直接在編輯器中編輯快捷鍵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章