1. 程式人生 > >UltraEdit個性化定製-Hive QL程式碼摺疊、函式列表及自動補全

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(全部展開),可以使用已存在鍵,也可以為其設定新的鍵。點選“在編輯器顯示鍵盤對映”,可以直接在編輯器中編輯快捷鍵。