導航和編輯 Java 原始碼
Visual Studio Code 首先是一個原始碼編輯器,具有豐富的編輯功能。在本文件中,我們將介紹一些 Java 特定的功能,這些功能在處理 Java 時很有幫助。
如果您在使用以下功能時遇到任何問題,可以透過提交問題聯絡我們。
程式碼導航
透過大綱檢視,你可以方便地在當前檔案中導航成員。專案檢視也提供了專案的概覽。作為一個 Java 編輯器,它還支援呼叫層次結構、型別層次結構、定義導航、在工作區中搜索型別等功能。
搜尋符號
你可以在當前檔案或工作區中搜索符號,以更快地導航程式碼。
在工作區中搜索符號
要在當前工作區中搜索符號,請按 ⌘T (Windows, Linux Ctrl+T),然後輸入符號的名稱。一個潛在匹配項的列表將像之前一樣出現。如果你選擇的匹配項位於一個尚未開啟的檔案中,該檔案將在導航到匹配項位置之前被開啟。或者,你也可以使用快速開啟 (⌘P (Windows, Linux Ctrl+P)) 然後輸入“#”命令來搜尋當前工作區。⌘T (Windows, Linux Ctrl+T) 只是“#”命令的快捷方式,所以一切都同樣有效。
在當前檔案中搜索符號
要在當前檔案中搜索符號,請使用快速開啟 (⌘P (Windows, Linux Ctrl+P)) 然後輸入“@”命令,接著輸入你要查詢的符號的名稱。一個潛在匹配項的列表將會出現,並隨著你的輸入而篩選。從匹配項列表中選擇一個以導航到其位置。
速覽定義
你可以使用“速覽定義”功能快速檢視符號的定義方式。此功能在速覽視窗內顯示定義附近的幾行程式碼,因此你無需離開當前位置即可檢視。
要速覽符號的定義,請將游標放在原始碼中任何使用該符號的地方,然後按 ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10)。或者,你可以從上下文選單中選擇速覽定義(右鍵單擊,然後選擇速覽定義)。
轉到定義
你還可以使用“轉到定義”功能快速導航到符號的定義位置。
要轉到符號的定義,請將游標放在原始碼中任何使用該符號的地方,然後按 F12。或者,你可以從上下文選單中選擇轉到定義(右鍵單擊,然後選擇轉到定義)。當符號只有一個定義時,你將直接導航到其位置,否則,競爭的定義將如上一節所述在速覽視窗中顯示,你必須選擇要轉到的定義。
轉到超級實現
你可以透過在懸停時點選轉到超級實現連結來跟蹤類的實現和重寫方法。
呼叫層次結構
呼叫層次結構檢視顯示了某個函式的所有呼叫方或被呼叫方,並允許你深入檢視呼叫者的呼叫者和呼叫的呼叫。右鍵單擊一個函式並選擇速覽 > 速覽呼叫層次結構。
你也可以在函式體中右鍵單擊並選擇顯示呼叫層次結構。
型別層次結構
型別層次結構檢視顯示了 Java 物件之間的繼承關係。你可以在一個型別上右鍵單擊並選擇顯示型別層次結構。
摺疊區域
摺疊區域允許你摺疊或展開程式碼片段以更好地檢視原始碼。
智慧選擇
透過智慧選擇(語義選擇),你可以根據原始碼中游標位置的語義資訊來擴充套件或收縮選擇範圍。
- 要擴充套件選擇,請使用 ⌃⇧⌘→ (Windows, Linux Shift+Alt+Right)。
- 要收縮選擇,請使用 ⌃⇧⌘← (Windows, Linux Shift+Alt+Left)。
語義高亮
語法高亮是一項重要功能,它能讓你更有效地閱讀程式碼。藉助語義高亮,VS Code 可以根據來自 Java 語言服務的符號資訊提供更準確的原始碼著色。
下面只是一個例子,左邊是啟用語義高亮後的行為,右邊是隻有語法高亮的行為。
你可以在 Java 語言支援擴充套件的 wiki 上了解更多關於 Java 語義高亮的細節。
使用 Spring Boot 導航程式碼
Spring Boot Tools 擴充套件為 Spring Boot 專案提供了增強的導航和程式碼補全支援。
@/
顯示所有已定義的請求對映(對映路徑、請求方法、源位置)@+
顯示所有已定義的 Bean(Bean 名稱、Bean 型別、源位置)@>
顯示所有函式(原型實現)@
顯示程式碼中的所有 Spring 註解
要了解有關 Visual Studio Code 對 Spring Boot 的支援的更多資訊,請閱讀在 Visual Studio Code 中使用 Spring Boot。
程式碼編輯
透過智慧感知(IntelliSense)提供的智慧程式碼補全和簽名細節,編輯程式碼也變得輕而易舉。你還可以使用程式碼片段以及各種程式碼操作(例如生成 Getters/Setters 和組織匯入)來進一步提高你的生產力。
Visual Studio Code 中的 Java 支援會自動檢測程式碼中的問題,併為你提供快速修復建議。
有關重構和程式碼操作的更多詳細資訊,請參閱重構和原始碼操作。
IntelliSense
Visual Studio Code for Java 中的程式碼補全由 Language Support for Java™ by Red Hat 提供。該擴充套件由 Eclipse 背後的相同 Java 開發工具 (JDT) 提供支援,因此你可以期待同樣級別的支援。
此外,還有一種名為 IntelliCode 的 AI 輔助智慧感知功能。它透過將你最可能使用的內容放在補全列表的頂部來節省你的時間。IntelliCode 的建議基於 GitHub 上數千個每個都超過 100 顆星的開源專案,因此它是在高質量專案最常見用法的基礎上訓練的。當與你的程式碼上下文相結合時,補全列表會經過量身定製以推廣這些實踐。以下是 IntelliCode for Java 的實際應用。
IntelliCode 與流行的 Java 庫和框架(如 Java SE 和 Spring)配合良好。無論你是在做單體 Web 應用還是現代微服務,它都將對你有所幫助。
建立新檔案
VS Code 支援在建立 Java 原始檔時應用模板。當你在檔案資源管理器中建立 .java
檔案時,語言伺服器將自動生成類主體,併為你填充包資訊。
程式碼片段
Visual Studio Code 支援各種流行的 Java 程式碼片段,讓你更有效率,例如 class/interface、syserr、sysout、if/else、try/catch、靜態 main 方法。利用來自 Java 語言伺服器的資訊,它還在選擇期間提供了程式碼片段的預覽。
例如,輸入“sout”或“sysout”將生成 System.out.println()
的程式碼片段。
同樣,輸入“main”或“psvm”將生成 public static void main(String[] args) {}
的程式碼片段。
完整的快捷方式列表如下
程式碼片段快捷鍵
快捷鍵 | 描述 |
---|---|
ctor | 公共建構函式 |
dowhile | Do-while 語句 |
foreach, iter | 遍歷陣列或 Iterable |
fori | 遍歷陣列 |
if | If 語句 |
ifelse | If-else 語句 |
ifnull | 檢查 null 的 If 語句 |
ifnotnull | 檢查非 null 的 If 語句 |
main, psvm | 公共靜態 main 方法 |
new | 建立新物件 |
private_method | 私有方法 |
private_static_method | 私有靜態方法 |
prf | 私有欄位 |
protected_method | 受保護的方法 |
public_method | 公共方法 |
public_static_method | 公共靜態方法 |
switch | Switch 語句 |
syserr, serr | 列印到標準錯誤 |
sysout, sout | 列印到標準輸出 |
systrace, soutm | 將當前方法列印到標準輸出 |
try_catch | Try/catch 塊 |
try_resources | Try-with-resources 語句 |
while | While 語句 |
字尾片段快捷鍵
快捷鍵 | 模板內容 | 描述 |
---|---|---|
cast | ((SomeType) expr) | 將表示式強制轉換為新型別 |
else | if (!expr) | 建立一個否定的 if 語句 |
for | for (T item : expr) | 建立一個 for 語句 |
fori | for (int i = 0; i < expr.length; i++) | 建立一個遍歷陣列的 for 語句 |
forr | for (int i = expr.length-1; i >= 0; i--) | 建立一個按相反順序遍歷陣列的 for 語句 |
if | if (expr) | 建立一個 if 語句 |
nnull | if (expr != null) | 建立一個 if 語句並檢查表示式是否不為 null |
null | if (expr == null) | 建立一個檢查表示式是否為 null 的 if 語句 |
sysout | System.out.println(expr) | 將受影響的字串傳送到 System.out.println(..) 呼叫 |
throw | throw expr | 丟擲給定的異常 |
var | T name = expr | 建立一個新變數 |
while | while (expr) {} | 建立一個 while 迴圈 |