再次聊聊20個(gè)IntelliJ IDEA最常用的導(dǎo)航功能
11 跳轉(zhuǎn)到類層次結(jié)構(gòu)上方
有個(gè)常見(jiàn)的模式是您需要通過(guò)類層次結(jié)構(gòu)跳轉(zhuǎn)到當(dāng)前方法(或整個(gè)類)的上方。在大多數(shù)IDE中,您可以在方法定義旁邊的裝訂線上看到一個(gè)特殊的圖標(biāo),通過(guò)點(diǎn)擊該圖標(biāo),可以導(dǎo)航到超類(或接口)中相應(yīng)的方法定義。除此之外,IntelliJ IDEA還有一個(gè)專門的操作稱為"Super Method",通過(guò)Ctrl + U(OS X上為Cmd + U)可用。這個(gè)操作可以讓您一次跳到上方,甚至無(wú)需觸碰鼠標(biāo)。
12 跳轉(zhuǎn)到類層次結(jié)構(gòu)下方
如果您可以通過(guò)類層次結(jié)構(gòu)向上跳轉(zhuǎn),為什么不能向下導(dǎo)航呢?很少有IDE提供這樣的選項(xiàng),而IntelliJ IDEA就是其中之一。除了將您帶到超類的圖標(biāo)外,IntelliJ IDEA還提供了導(dǎo)航到派生類中相應(yīng)方法定義的圖標(biāo),因此您可以進(jìn)行上下跳轉(zhuǎn)。
圖片
那些希望更快地向下導(dǎo)航類層次結(jié)構(gòu)的人,可以使用與Ctrl + Alt + B(OS X上為Cmd + Alt + B)映射的"Implementations"操作。該操作允許您從派生類的整個(gè)列表中選擇要前往的一個(gè)實(shí)現(xiàn):
圖片
13 方法層次結(jié)構(gòu)
如果您想查看實(shí)現(xiàn)或重寫當(dāng)前方法的所有類的完整層次結(jié)構(gòu)怎么辦?在IntelliJ IDEA中,您可以通過(guò)調(diào)用"Method Hierarchy"操作來(lái)實(shí)現(xiàn),通過(guò)Ctrl + Shift + H(OS X上為Cmd + Shift + H)可用。這個(gè)操作可以幫助您找出您可能想要導(dǎo)航的類。
圖片
14 圖形彈出
前文學(xué)習(xí)了如何在方法定義的層次結(jié)構(gòu)上導(dǎo)航。有時(shí),我們還需要在當(dāng)前類(或插入符號(hào)所在的類)的層次結(jié)構(gòu)上導(dǎo)航,而不管任何方法。為了做到這一點(diǎn),在大多數(shù)IDE中,您可以使用顯示給定類(或接口)層次結(jié)構(gòu)的操作。在IntelliJ IDEA中,這個(gè)操作被稱為"Type Hierarchy",并映射為Ctrl + H。
圖片
正如您所見(jiàn),這個(gè)操作的結(jié)果是一棵樹(shù),有些人可能覺(jué)得這種格式難以理解,這就是為什么IntelliJ IDEA還有另一個(gè)操作,稱為"Diagram popup",通過(guò)Ctrl + Alt + U(OS X上為Cmd + Alt + U)進(jìn)行映射。與顯示無(wú)聊的樹(shù)不同,此操作在圖表上可視化給定類的層次結(jié)構(gòu)。
圖片
您可以在圖表上導(dǎo)航到任何類或接口。
15 方法調(diào)用層次結(jié)構(gòu)
談到在層次結(jié)構(gòu)、類和方法定義上導(dǎo)航時(shí),我們幾乎涵蓋了所有內(nèi)容,除了一件特定的事情:在方法調(diào)用的層次結(jié)構(gòu)上導(dǎo)航。每個(gè)方法調(diào)用其他方法,而這些方法又調(diào)用其他方法,依此類推。這就是為什么有時(shí)候您可能想要導(dǎo)航到從當(dāng)前方法調(diào)用的方法之一,或者導(dǎo)航到調(diào)用當(dāng)前方法的方法之一。在IntelliJ IDEA中,您可以通過(guò)調(diào)用Ctrl + Alt + H鍵映射的"Call Hierarchy"操作,快速獲取包含方法調(diào)用層次結(jié)構(gòu)的彈出窗口:
圖片
16 展示用法
另一個(gè)經(jīng)常出現(xiàn)的情形是導(dǎo)航到光標(biāo)所在位置的符號(hào)(常量、字段、變量、方法、類或接口)所使用的地方。為了實(shí)現(xiàn)這一點(diǎn),在任何集成開(kāi)發(fā)環(huán)境中,您可以使用查找用法操作。這種操作的一個(gè)缺點(diǎn)通常是它的重量級(jí):它啟動(dòng)一個(gè)長(zhǎng)時(shí)間運(yùn)行的搜索過(guò)程并打開(kāi)一個(gè)帶有結(jié)果的工具窗口。這就是為什么IntelliJ IDEA還提供了一個(gè)輕量級(jí)版本的此操作,稱為“顯示用法”,可以通過(guò)Alt + Ctrl + F7(OS X上的Cmd + Alt + F7)進(jìn)行訪問(wèn):
圖片
此操作在彈出窗口中顯示結(jié)果,并默認(rèn)使用項(xiàng)目級(jí)別范圍。當(dāng)您第二次調(diào)用此操作時(shí),它會(huì)將范圍更改為項(xiàng)目和庫(kù)級(jí)別。
17 最近編輯的文件
本文的第一個(gè)模式是關(guān)于最近訪問(wèn)文件的導(dǎo)航。如果我們想將此列表縮小到最近編輯的文件呢?對(duì)于這個(gè)問(wèn)題,使用IntelliJ IDEA的“最近編輯的文件”操作非常簡(jiǎn)單,快捷鍵為Ctrl + Shift + E(OS X上的Cmd + Shift + E):
圖片
18 視圖和控制器之間的導(dǎo)航
您認(rèn)為您的集成開(kāi)發(fā)環(huán)境只應(yīng)該識(shí)別項(xiàng)目文件中的一般關(guān)系(例如類層次結(jié)構(gòu)、測(cè)試覆蓋率、用法等)嗎?那么更具體的情況呢?為了基于特定關(guān)系進(jìn)行導(dǎo)航,IntelliJ IDEA提供了相關(guān)符號(hào)操作,快捷鍵為Ctrl + Alt + Home(OS X上的Cmd + Alt + Home)。通過(guò)此操作,例如,您可以輕松在Spring MVC、Grails甚至JavaFX應(yīng)用程序中在視圖和控制器之間導(dǎo)航:
圖片
19 導(dǎo)航到視圖控制器
由于IntelliJ IDEA還能夠識(shí)別項(xiàng)目中的特定關(guān)系,它還帶來(lái)了哪些其他特定導(dǎo)航模式?如果您是Web應(yīng)用程序開(kāi)發(fā)人員,您可以調(diào)用“轉(zhuǎn)到符號(hào)”操作,通過(guò)輸入U(xiǎn)RL來(lái)導(dǎo)航到視圖控制器:
圖片
20 與數(shù)據(jù)庫(kù)相關(guān)的導(dǎo)航模式
IntelliJ IDEA中的數(shù)據(jù)庫(kù)工具也有其特定的導(dǎo)航模式。您可以通過(guò)使用“轉(zhuǎn)到符號(hào)”操作并輸入表的名稱,快速跳轉(zhuǎn)到數(shù)據(jù)庫(kù)工具窗口中的表:
圖片
如果您在表或列上調(diào)用“查找用法”,IntelliJ IDEA將顯示引用它的所有其他表:
圖片
并且,IntelliJ IDEA還可以在給定表中導(dǎo)航到主鍵的用法。例如,您可以要求IDE顯示引用當(dāng)前行的其他表中的行:
圖片
總結(jié)
本文旨在介紹IntelliJ IDEA如何幫助您在項(xiàng)目中進(jìn)行導(dǎo)航,以提高代碼編寫效率和保持專注。導(dǎo)航的重要性在于快速切換不同代碼片段之間,而快速切換意味著更高的工作效率。希望本文對(duì)您的編碼有所幫助。