在 VS Code 中使用 GitHub Copilot 進行程式碼補全
GitHub Copilot 充當一個由 AI 驅動的結對程式設計師,自動提供建議來補全你的程式碼、註釋、測試等。它在你編寫程式碼時直接在編輯器中提供這些建議,並且可以與多種程式語言和框架協同工作。
Copilot 提供兩種建議
-
程式碼補全 - 開始在編輯器中輸入,Copilot 會提供符合你的編碼風格並考慮你現有程式碼的程式碼建議。
-
下一個編輯建議 - 使用 Copilot 下一個編輯建議(又稱 Copilot NES)來預測你的下一次程式碼編輯。根據你正在進行的編輯,NES 會預測你想要進行的下一次編輯的位置以及該編輯應該是什麼。
入門
-
安裝 GitHub Copilot 擴充套件。
-
使用你的 GitHub 帳戶登入以使用 Copilot。
提示如果你還沒有 Copilot 訂閱,可以透過註冊 Copilot 免費計劃 免費使用 Copilot,並獲得每月限量的補全和聊天互動次數。
-
透過我們的 Copilot 快速入門 瞭解 VS Code 中 Copilot 的主要功能。
內聯建議
Copilot 在你輸入時提供程式碼建議:有時是補全當前行,有時是一整個新的程式碼塊。你可以接受全部或部分建議,也可以繼續輸入並忽略建議。
請注意在下面的示例中,Copilot 如何透過使用變暗的幽靈文字建議 calculateDaysBetweenDates
JavaScript 函式的實現:
當你看到內聯建議時,可以使用 Tab 鍵接受它。
Copilot 會嘗試為你程式碼中已有的編碼風格應用相同的風格到程式碼建議中。請注意在下面的示例中,Copilot 為建議的 subtract
方法應用了與 add
方法相同的輸入引數命名方案。
部分接受建議
你可能不想接受 GitHub Copilot 的整個建議。你可以使用 ⌘→ (Windows、Linux 為 Ctrl+Right) 快捷鍵來接受建議的下一個單詞或下一行。
備選建議
對於任何給定的輸入,Copilot 可能會提供多個備選建議。你可以將滑鼠懸停在建議上檢視其他建議。
從程式碼註釋生成建議
除了依賴 Copilot 提供建議,你還可以透過使用程式碼註釋來提示你期望的程式碼。例如,你可以指定要使用的演算法或概念型別(例如,“使用遞迴”或“使用單例模式”),或者要向類中新增哪些方法和屬性。
下面的示例展示瞭如何指示 Copilot 在 TypeScript 中建立一個表示學生的類,並提供有關方法和屬性的資訊:
下一個編輯建議
內聯建議非常適合自動補全一段程式碼。但由於大多數編碼活動是編輯現有程式碼,因此 Copilot 程式碼補全的自然演進是也幫助進行編輯,無論是在游標處還是在更遠的地方。編輯通常不是孤立進行的——在不同場景下,需要進行的編輯存在邏輯流程。下一個編輯建議(Copilot NES)正是這種演進。
基於你正在進行的編輯,下一個編輯建議會預測你想要進行的下一次編輯的位置以及該編輯應該是什麼。Copilot NES 幫助你保持心流狀態,建議與你當前工作相關的未來更改,你只需按 Tab 鍵即可快速導航並接受 Copilot 的建議。建議可能跨越單個符號、一整行或多行,具體取決於潛在更改的範圍。
要開始使用 Copilot NES,請啟用 VS Code 設定 github.copilot.nextEditSuggestions.enabled。
導航並接受編輯建議
你可以使用 Tab 鍵快速導航到建議的程式碼更改,從而節省你尋找下一個相關編輯的時間(無需手動搜尋檔案或引用)。然後,你可以再次按 Tab 鍵接受建議。
邊欄中的箭頭指示是否有可用的編輯建議。箭頭指示下一個編輯建議相對於你當前游標位置的位置。
你可以將滑鼠懸停在箭頭上以瀏覽編輯建議選單,其中包括鍵盤快捷鍵和設定配置:
如果你是 VS Code vim 擴充套件 的使用者,請使用最新版本的擴充套件以避免與 NES 的鍵繫結衝突。
透過編輯建議減少干擾
預設情況下,編輯建議由邊欄箭頭指示,並且程式碼更改顯示在編輯器中。啟用 editor.inlineSuggest.edits.showCollapsed 設定,程式碼更改將僅在你按下 Tab 鍵導航到建議或將滑鼠懸停在邊欄箭頭上時才顯示在編輯器中。或者,將滑鼠懸停在邊欄箭頭上,然後從選單中選擇 摺疊顯示 選項。
下一個編輯建議的用例
發現並糾正錯誤
-
Copilot 幫助處理簡單的錯誤,如拼寫錯誤。 它會建議修復缺失或交換字母的地方,例如
cont x = 5
或conts x = 5
,而正確的應該是const x = 5
。 -
Copilot 還可以幫助處理更具挑戰性的邏輯錯誤,例如反轉的三元表示式:
或者一個本應使用
&&
而不是||
的比較:
改變意圖
-
Copilot 會建議對程式碼的其餘部分進行更改,以匹配新的意圖變化。 例如,當將一個類從
Point
更改為Point3D
時,Copilot 會建議在類定義中新增一個z
變數。接受更改後,Copilot NES 接下來會建議將z
新增到距離計算中:
重構
-
在一個檔案中重新命名一個變數,Copilot 會建議在其他所有地方都更新它。 如果你使用新的名稱或命名模式,Copilot 會建議類似地更新後續程式碼。
-
匹配程式碼風格。貼上一些程式碼後,Copilot 會建議如何調整它以匹配當前貼上位置的程式碼風格。
啟用或停用程式碼補全
你可以為所有語言或僅為特定語言啟用或停用程式碼補全。要啟用或停用程式碼補全,請選擇狀態列中的 Copilot 選單,然後勾選或取消勾選相應的選項。為特定語言停用程式碼補全的選項取決於活動編輯器的語言。
或者,在設定編輯器中修改 github.copilot.enable 設定。為你想要啟用或停用程式碼補全的每種語言新增一個條目。要為所有語言啟用或停用程式碼補全,請將 *
的值設定為 true
或 false
。
要臨時停用編輯器中的所有程式碼補全,請選擇狀態列中的 Copilot 選單,然後選擇 暫停 按鈕,將暫停時間增加五分鐘。要恢復程式碼補全,請在 Copilot 選單中選擇 取消暫停 按鈕。
或者,在命令面板中使用 暫停內聯建議 和 取消暫停內聯建議 命令。
更改用於補全的 AI 模型
不同的大型語言模型 (LLM) 在不同型別的資料上進行訓練,可能具有不同的能力和優勢。瞭解更多關於如何在 VS Code 中 選擇不同的 AI 語言模型 的資訊。
要更改用於在編輯器中生成程式碼補全的語言模型:
-
開啟命令面板 (F1)。
-
輸入 更改補全模型 並選擇 GitHub Copilot: 更改補全模型 命令。
-
在下拉選單中,選擇你想要使用的模型。
可用模型列表可能會隨時間變化。模型選擇器可能不總是顯示多個模型,預覽模型和其他程式碼補全模型將在我們釋出時出現在那裡。如果你是 Copilot Business 或 Enterprise 使用者,你的管理員需要在 GitHub.com 的 Copilot 策略設定 中選擇加入 編輯器預覽功能
,為你的組織啟用某些模型。
提示與技巧
上下文
為了給你提供相關的內聯建議,Copilot 會檢視你編輯器中當前和開啟的檔案來分析上下文並建立適當的建議。在使用 Copilot 時在 VS Code 中開啟相關檔案有助於設定此上下文,並讓 Copilot 對你的專案有更全面的瞭解。
設定
程式碼補全設定
-
github.copilot.enable - 為所有或特定語言啟用或停用內聯補全。
-
editor.inlineSuggest.fontFamily - 配置內聯補全的字型。
-
editor.inlineSuggest.showToolbar - 啟用或停用為內聯補全顯示的工具欄。
-
editor.inlineSuggest.syntaxHighlightingEnabled - 啟用或停用內聯補全的語法高亮。
下一個編輯建議設定
-
github.copilot.nextEditSuggestions.enabled - 啟用 Copilot 下一個編輯建議 (Copilot NES)。
-
editor.inlineSuggest.edits.allowCodeShifting - 配置 Copilot NES 是否能夠移動你的程式碼以顯示建議。
-
editor.inlineSuggest.edits.renderSideBySide - 配置 Copilot NES 是否可以在可能的情況下並排顯示較大的建議,或者 Copilot NES 是否應始終在相關程式碼下方顯示較大的建議。
- auto (預設): 如果視口中有足夠的空間,則並排顯示較大的編輯建議,否則建議將顯示在相關程式碼下方。
- never: 從不併排顯示建議,始終在相關程式碼下方顯示建議。
-
github.copilot.nextEditSuggestions.fixes - 基於診斷資訊(波浪線)啟用下一個編輯建議。例如,缺失的匯入。
-
editor.inlineSuggest.minShowDelay - 顯示內聯建議前等待的毫秒數。預設為
0
。
後續步驟
-
在快速入門中發現主要功能。
-
在 VS Code 聊天中使用 AI 聊天對話。
-
在 YouTube 上觀看我們的 VS Code Copilot 系列影片。