IntelliJ IDEA導航特性Top20

在前面的文章裏,我介紹了IntelliJ IDEA(以下稱IntelliJ)中與代碼補全重構相關的特性。今天我將介紹另外一個利器——IntelliJ的導航(Navigation),只要運用得當,它將節約你大把的時間。

作爲一個IntelliJ的用戶,你應先明確一點——IntelliJ是用來讓你專注於代碼的工具。只有這樣我們才能充分利用並享受它的魔力。因此,大部分的時間裏你應該專心工作於代碼編輯器中,僅把導航當做在不同位置的代碼間快速切換的好幫手。

本文旨在介紹IntelliJ的導航在工程文件(project files)、代碼塊(block of code),及工具窗口(tool window)、編輯器標籤等UI元素上的特性。

1、最近編輯的文件

如果停下來仔細分析你所有的導航行爲(Navigation Pattern),你會意識到,在大部分的時間裏你只固定的一些文件上工作。這就很好地解釋了爲什麼Recent files是IntelliJ用戶的常用特性。一旦能熟練使用它,你就會將其逐漸引入到你大部分的導航操作中去。而使用這一特性只需使用快捷鍵Ctrl+E(OS X爲Cmd+E)。

請注意,該功能默認選中最後訪問的文檔,所以只需使用回車或者鼠標單擊便能跳轉到此文件。如果想減少列表中的候選項,則可以藉助Speed Search 功能——輸入目標文件名中的一部分,列表將僅顯示匹配項。

IntelliJ導航配圖

2、結構菜單(Structure popup)

另一個你每天都會做的,就是要在當前打開的文件中四處奔波,而文件有一個共性:它們有自己的文件結構。例如,一個Java的類文件含有字段和方等成員組成的結構。XML和HTML文 件包含一個標籤樹(tags tree)結構。如果想快速的導航到文件結構的某一部分,那就快按下Ctrl+F12(OS X 上爲Cmd+F12)來選 擇想跳轉的地方吧。(同樣的,Speed  Search亦可用於減少列表中的候選項)

structure_popup_1

有時,你對信息的需求可能會影響Structure popup中顯示的內容。例如,一個Java類的結構圖可能包含了與其相關的基類或接口的結構信息。不過在默認情況下,IntelliJ會隱藏它們,如果確實需要,那麼再按一次快捷鍵即可。

IntelliJ會貼心地記錄你在Structure popup中的操作偏好,並在下一次調用它時體現出來。

3、跳轉至導航欄

通常,屏幕中只顯示含代碼的編輯器是一件喜聞樂見的事情。但也有人希望看到項目樹(project tree),因爲它有助於理解或者快速修改項目的上下文。 事 實上,在項目樹和編輯器之間切換是IntelliJ中極其容易的事情。不過事實上,項目樹並非最佳選擇。老練的IntelliJ用戶知道一個更好的替代 品:導航欄。新用戶常以爲那只不過是一個麪包屑菜單(breadcrumb)罷了,但在有經驗的開發者眼中,這可是一把瑞士軍刀!按下快捷鍵 Alt+Home(OS X爲Alt +   )執行Jump to navigation bar的操作,我們就能感受到它的威力——利用它我們可以跳轉至項目的每一處,可以創建和修改任一文件以及其他許許多多有意義的事情。

navigation_bar_1

值得一提的是,即便在導航欄隱藏時,我們也可以執行此操作。

navigation_bar_2

 4、跳轉至指定類

你可能會想:Go to a class這麼一個簡單的操作有什麼好說的?也許你已經知道Ctrl+N(OS X中爲Cmd+N)能夠在類之間跳轉,但不見得你就知道這個功能比它看起來強大得多。除了各家IDE都支持的簡單通配符、駝峯式命名、包名前綴以外,IntelliJ還可以將中間名匹配(middle name matching)、行號後綴、快速文檔、定義菜單(definition popups)等方法引入這一功能:

go_to_class

默認情況下,Go to a class功能的搜索僅會在你的項目中執行。若沒有匹配項,再按一下快捷鍵,搜索將在項目引用的庫中展開。

在IntelliJ中,我們完全可以不借用鼠標便輕易地執行類間跳轉:當菜單出現的時候,輸入或修改查詢語句,最後利用鍵盤的上下鍵選擇目標即可。若你曾試圖在其他IDE中嘗試這種方法,你肯定知道我在說什麼。

5、跳轉至指定的文件或目錄

當你需要打開項目中特定的文件,利用快捷鍵Ctrl+Shift+N(OS X中爲Cmd + Shift + N )是個不二的選擇。除了實現其基本的功能外,你還可以藉由通配符、駝峯式命名以及目錄名前綴等方法進行搜索。

go_to_file

6、跳轉至指定符號

終於要介紹Go to…特性家族裏的最後一位重要成員了——Go to a symbol。 通過快捷鍵Ctrl + Shift + Alt + N (OS X爲Cmd + Shift + Alt + N ),便能在不用全文搜索(full-text search)的情況下導航到指定的符號處。因爲IntelliJ會一直維護項目及庫中所有符號的索引,所以無論項目規模多麼龐大,它依舊可以在通過相應 表達式在幾秒內輕易地找到匹配的方法或字段。

go_to_symbol

7、在…中選定

如果需要在特定的工具窗口(如Project/Changes View,甚至Explorer/Finder)中選定正在編輯的文件,那麼通過快捷鍵Alt+F1來使用Select in…的功能是再方便不過了。

select_in

8、切換至指定的工具窗口

IntelliJ的大多數工具窗口都分配了簡單的快捷鍵組合。通過快捷 鍵,你便能快速呼出對應的工具窗口並使其獲得焦點。在工具窗口獲得焦點時再按一次快捷鍵,工具窗口將會隱藏,你便能返回編輯器上工作啦。這種方法實在是方 便,更重要的是,它讓你完全擺脫了鼠標——每當需要某一個特定的工具窗口或者想返回編輯器,按快捷鍵就好了。

確保你至少能記住以下幾個快捷鍵:

  • Project工具窗口:Alt + 1 (OS X中爲Cmd + 1
  • Changes工具窗口:Alt + 9(OS X中爲Cmd + 9
  • Terminal工具窗口:Alt + F12

9、返回編輯器

很多人都不知道IntelliJ的一個小竅門——按下Escape就能返回編輯器。當你使用這種方法時,此前被呼出的工具窗口仍保持其可視狀態。當然啦,如 果你不想看到這些窗口,按下快捷鍵Ctrl + Alt + F12(OS X爲Cmd+ Alt + F12)即可。

譯註: 在本地測試時該快捷鍵對應File Path,而Shift+F12纔是正確的快捷鍵

10、跳轉至關聯的單元測試

當你正在編寫代碼,特別是想同時確保代碼順心如意,常用的導航功能是什麼呢?當然是在類和對應的單元測試中來回切換啦。IntelliJ可以識別每一個類所關聯的測試,並且提供Go to a test的工能。按下Ctrl + Shift + T (OS X 爲Cmd + Shift + T),便能在它們之間來去自如:

go_to_test

如果在使用這一功能的類沒有相關聯的測試,則IntelliJ會好心地幫你生成一個。

11、跳至上方的層級

另 一個常見的行爲是,你會爲了某個類或者其某個方法,需要瀏覽該類的層級結構。在大多數IDE中,你能看到一個圖標出現在與方法定義處於同一行的 gutter裏(譯註:gutter即編輯器左側的窄條,可見特性21)。通過點擊這個圖標,就導航到了父類(或接口)中該方法定義的位置。除此以 外,IntelliJ獨創了一個叫Super Method的功能,按下快捷鍵Ctrl + U (OS X爲Cmd + U )即可。它在無不借助鼠標的情況下實現向上跳轉一級。

12、跳至下方的層級

既然可以向上跳轉,憑啥不能向下呢?話雖如此,事實上,鮮有 IDE實現了這一功能,所幸IntelliJ就是其中的一個。除了提供跳轉至父類的圖標,IntelliJ同樣提供一個可導航至子類對應方法的定義位置的 圖標,所以,在IntelliJ的世界,可謂“上天入地”(up and down)無所不能。

navigate_up_down

如果想不用鼠標,並更快地導航至下層,那就使用快捷鍵Ctrl + Alt + B (OS X 爲 Cmd + Alt + B for OS X)調用Implementations來實現吧,它將列出所有實現了當前類的子類讓你挑選:

go_to_implementations

13、方法層級圖

那要是想查看有關所有實現或者覆寫了當前方法的類的結構圖呢?在IntelliJ中,有一個Method Hierarchy的功能,可以通過快捷鍵Ctrl + Shift + H (OS X 爲 Cmd + Shift + H )來調用。這個功能讓你能導航至所有符合這一關係的類中:

method_hierarchy

14、圖解菜單(Diagram popup)

我們剛學習了一些在有關方法定義的層級結構中導航的門路。可能在某些時候還要在當前的類(或者說光標所處的類,無論它有多少的方法)的層次結構中使用導航。大多數IDE通過提供單個類或接口的層級結構,以實現這一需求。在IntelliJ裏這種功能稱爲類型層級(Type Hierarchy,其快捷鍵爲Ctrl+H

type_hierarchy

如你所見,該功能返回一個樹形結構。有些人可能覺得這種格式難以理解,所以IntelliJ同時提供了另一個稱爲Diagram popup——快捷鍵爲Ctrl + Alt + U (OS X 爲Cmd + Alt + U)——的功能,以UML圖的方式替代樹形結構來描述給定的類的層級結構:

diagram_popup

不用提醒你就能知道,通過它我們可以導航到任何由圖形所表示的類或接口中。

15、方法調用層級結構

除了類和方法定義的層級結構以外,我們還有一個特殊的導航行爲:在方法調用的層級結構中導航。每一個方法會調用很多調用另一些方法的方法,以此類推。這就是爲什麼有時你需要導航到被當前方法所調用或者調用了它的方法中去。通過快捷鍵Ctrl + Alt + H來藉助Call Hierarchy功能,便可讓IntelliJ爲你快速地呈現當前方法的調用層級結構:

method_call_hierarchy

16、顯示使用情況

導航到使用了光標指定的符號的位置,亦是一件常有的事。爲了做到這一點,每個IDE都會提供一個Find usages的功能。但這個功能的缺點在於,它通常實現得十分“笨重”——它不僅要單獨啓動一個長時間運行的進程,還需要創建一個工具窗口來顯示結果。爲此IntelliJ提供了一個輕量級的解決方案——Show usages,其快捷鍵爲Alt + Ctrl + F7 (OS X 爲Cmd + Alt + F7 ):

 show_usages

這個功能以菜單的形式展示結果,並且默認情況下只在工程級別(Project level)的範圍內運行。如果再調用一次該功能,其運行範圍將擴充至工程和庫級別(Project and libraries level)。

17、最近編輯的文件

在前面的內容中我介紹瞭如何導航至最近訪問的文件。那麼如果我希望在篩選出最近被編輯過的文件呢?在IntelliJ中只需通過快捷鍵Ctrl + Shift + E (OS X中爲Cmd + Shift + E)調用Recently Edited Files功能便能輕易滿足這一需求:

recent_files_1

18、在視圖與控制器中間導航

你認爲一個IDE只瞭解項目的文件中最基本的關係(如類的層次結構,測 試覆蓋率,使用情況等)便夠了嗎?那些特殊的關係呢?按下Ctrl+ Alt + Home (OS X爲Cmd + Alt + Home),即可藉助IntelliJ IDEA 提供的Related symbol的功能,讓你能夠獲得基於這些特殊關係(如在Sping MVC、Grails、甚至JavaFX應用的views和controllers之間)的導航功能。

go_to_related_file

19、導航至特性視圖控制器(View controller)

既然IntelliJ能夠弄清項目中的一些特殊關係,那麼它還具有哪些專用的導航功能呢?如果你是一個Web App開發者,可以通過輸入與view controller相關聯的URL,調用Go to a symbol功能,快捷地找到它:

go_to_url

20、數據庫相關導航模式

IntelliJ的那些數據庫工具也提供特殊的導航行爲。在數據庫工具窗口中,調用Go to a symbol,並鍵入表(table)的名字,便能快速地跳轉至表中:

go_to_table

如果在一個表或者一個列(column)中使用Find usages功能,IntelliJ便將展示所有引用了它的表:database_find_usages

更讓人欣喜若狂的是,IntelliJ可以根據主鍵的使用情況,將你導航到其它表中。比如,你可以要求IDE顯示在其它表中,哪些行引用了當前行的主鍵值:

database_go_to_declaration

21、書籤

我 們接着來看看最後一個重要的行爲——通過書籤導航導航至任何你感興趣的位置。IntelliJ提供了非常方便的工具實現這一功能。按下F11,便可將當前 的位置在書籤表中添加(或刪除)。一旦完成添加操作,你便能在gutter裏看到一個相應的圖標。之後,每當想返回保存爲書籤的那個位置,按一下 Shift+F11,然後從列表中選擇即可:

bookmarks

總結

希望這篇文章讓你初步瞭解瞭如何利用IntelliJ強大的導航功能,實現在自己工作的代碼中快速地切換,以保證自己專注於代碼之中。換句話說,如果能讓自己在切換上所花的時間越少,你的生產效率就會越高。

另外,請記住——對自己所使用的IDE瞭解得更多,你的編程生活就會變得更加愜意。

原文鏈接: dzone 翻譯: ImportNew.com elviskang
譯文鏈接: http://www.importnew.com/15462.html
發佈了71 篇原創文章 · 獲贊 59 · 訪問量 60萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章