🚀 在 VS Code 中

在 VS Code 中使用編輯模式

透過 Visual Studio Code 中的聊天編輯模式,您可以使用自然語言在專案中的多個檔案中進行編輯。編輯會直接套用在編輯器中,您可以在編輯器中檢閱這些編輯,並完整掌握周圍程式碼的內容。

透過選取特定檔案並提供明確的內容,您可以引導編輯模式進行目標明確的程式碼變更和改進。

提示

如果您還沒有 Copilot 訂閱,您可以註冊 Copilot 免費方案,即可免費使用 Copilot,並獲得每月完成次數和聊天互動的限制。

使用編輯模式

在編輯模式中,您選取要編輯的檔案,並提供相關的內容和提示。Copilot 會根據您的提示建議程式碼編輯。

  1. 從 VS Code 標題列的 Copilot 功能表中選取 [開啟聊天],或使用 ⌃⌘I (Windows、Linux Ctrl+Alt+I) 鍵盤快速鍵,以開啟 [聊天] 檢視。

  2. 從 [聊天] 檢視中的聊天模式下拉式選單中選取 [詢問]。

    Screenshot showing the Copilot Edits view, highlighting edit mode selected.

  3. 選取 [新增內容] 以指出提示的相關內容。

    為了確保 Copilot 擁有您想要進行變更的正確內容,請將內容新增至您的提示,例如工作區中的檔案或資料夾。深入了解如何新增內容至 Copilot 提示

    使用中的編輯器會自動新增為內容。當您新增檔案時,可能會建議其他相關檔案。

    提示

    讓 Copilot 自動尋找正確的檔案,方法是在提示中新增 #codebase。請務必啟用 github.copilot.chat.codesearch.enabled (預覽) 設定,以獲得最佳結果。

  4. 在聊天輸入欄位中輸入您的提示,以指出您想要進行的編輯類型。

    試用以下一些範例問題以開始使用

    • 重構 calculate 函式,使其更有效率。
    • 在應用程式中新增登入表單。使用 OAuth 進行驗證。
    • 為計算機類別新增單元測試。使用 vitest 作為測試框架。
  5. 請注意,Copilot 會將建議的編輯直接串流到編輯器中。

    [聊天] 檢視會以粗體文字顯示已編輯檔案的清單。編輯器覆疊控制項可讓您在建議的編輯之間導覽。

    Screenshot that shows the Copilot Edits view, highlighting the changed files list and the indicator in the Explorer view and editor tabs.

  6. 檢閱建議的編輯,並接受或捨棄建議的編輯

  7. 繼續反覆修改程式碼變更,以精簡編輯或實作其他功能。

接受或捨棄編輯

Copilot 會在 [聊天] 檢視的已變更檔案清單中列出已編輯的檔案。具有擱置編輯的檔案在 [檔案總管] 檢視和編輯器索引標籤中也會有指示符。

Screenshot that shows the Copilot Edits view, highlighting the changed files list and the indicator in the Explorer view and editor tabs.

透過編輯器覆疊控制項,您可以使用 向上 () 和 向下 () 控制項在建議的編輯之間導覽。使用 [保留] 或 [復原] 按鈕來接受或拒絕指定檔案的編輯。

Screenshot showing the Editor with proposed changes, highlighting the review controls in the editor overlay controls.

使用編輯器或 [聊天] 檢視中的 [保留] 或 [復原] 控制項來接受或拒絕個別或所有建議的編輯。

Screenshot showing the Copilot Edits view, highlighting the Accept All and Discard All buttons.

透過 chat.editing.autoAcceptDelay 設定,您可以設定延遲時間,在延遲時間過後,建議的編輯會自動接受。將滑鼠游標停留在編輯器覆疊控制項上方,以取消自動接受倒數計時。

當您關閉 VS Code 時,系統會記住擱置編輯的狀態。當您重新開啟 VS Code 時,擱置編輯會還原,您仍然可以接受或捨棄編輯。

還原編輯

當您傳送要求以編輯程式碼時,您可能想要回溯其中一些變更,例如因為您想要使用另一個實作策略,或因為 Copilot 在產生編輯時開始走錯方向。

您可以使用 [聊天] 檢視標題列中的 [復原上次編輯] 控制項,以還原上次編輯並返回傳送上次要求之前的狀態。在您執行復原上次編輯之後,您可以再次使用 [聊天] 檢視標題列中的 [重做上次編輯] 控制項來重做這些編輯。

Screenshot showing the Copilot Edits view, highlighting the Undo and Redo actions in the view title bar.

當您將滑鼠游標停留在 [Copilot 編輯] 檢視中的要求上方時,您也可以使用 [復原編輯 (刪除)] 控制項 (x 圖示) 來還原從該要求之後所做的所有編輯。

Screenshot showing the Copilot Edits view, highlighting the Undo Edits control for a specific request.

設定

以下清單包含與編輯模式相關的設定。您可以透過 [設定編輯器] (⌘, (Windows、Linux Ctrl+,)) 設定設定。

  • chat.editing.confirmEditRequestRemoval - 在復原編輯之前要求確認 (預設值:true)。
  • chat.editing.confirmEditRequestRetry - 在執行重做上次編輯之前要求確認 (預設值:true)。
  • chat.editing.autoAcceptDelay - 設定延遲時間,在延遲時間過後,建議的編輯會自動接受,使用零以停用自動接受 (預設值:0)。
  • github.copilot.chat.codesearch.enabled (預覽) - 當您在提示中新增 #codebase 時,讓 Copilot 尋找正確的檔案,類似於代理人模式的運作方式 (預設值:false)。
  • chat.implicitContext.enabled (實驗性) - 設定是否應將使用中的編輯器自動新增為聊天提示的內容。
  • github.copilot.chat.edits.suggestRelatedFilesFromGitHistory (實驗性) - 在 Copilot 編輯中建議來自 git 歷程記錄的相關檔案 (預設值:false)。

鍵盤快速鍵

以下清單包含與 Copilot 編輯相關的預設鍵盤快速鍵。您可以使用 [鍵盤快速鍵編輯器] (⌘K ⌘S (Windows、Linux Ctrl+K Ctrl+S)) 修改任何預設鍵盤快速鍵。

  • ⇧⌘I (Windows Ctrl+Shift+I、Linux Ctrl+Shift+Alt+I) - 開啟 [Copilot 編輯] 檢視
  • ⌥⌘Enter (Windows、Linux Ctrl+Alt+Enter) - 從 [聊天] 檢視傳送提示至 [Copilot 編輯]
  • ⌘/ (Windows、Linux Ctrl+/) - 將內容附加到您的提示
  • - 將所有編輯過的檔案儲存到磁碟
  • ⌘Enter (Windows、Linux Ctrl+Enter) - 接受所有編輯
  • ⌘Backspace (Windows、Linux Ctrl+Backspace) - 捨棄所有編輯
  • ⇧⌥F5 (Windows、Linux Shift+Alt+F5) - 導覽至檔案內的上一個編輯
  • ⌥F5 (Windows、Linux Alt+F5) - 導覽至檔案內的下一個編輯
提示

如果您想要變更特定於 [Copilot 編輯] 檢視動作的鍵盤快速鍵,您需要在 when 子句中包含以下條件:chatLocation == 'editing-session'

限制

  • 尚不支援多個同步編輯工作階段。
  • 在編輯工作階段中,尚不支援使用 @workspace /new 來搭建新專案。目前,請使用 Copilot 聊天進行初始搭建。
  • 雖然 #codebase 非常適合尋找查詢的相關內容,但後續產生的編輯品質差異很大。試驗 github.copilot.chat.codesearch.enabled (預覽) 設定,以獲得更佳的代理人體驗來尋找檔案,或明確地將檔案新增至您的提示以產生更好的結果。
  • 尚無或未測試對自訂文字格式和二進位檔案格式的支援。

常見問題

我可以變更 [Copilot 編輯] 檢視的位置嗎?

您可以將 [Copilot 編輯] 檢視拖放到 [活動列] 中,以在 [主要側邊欄] 中顯示。您也可以將其移至 [次要側邊欄]。深入了解 VS Code 中的自訂版面配置

我為什麼要使用編輯模式而不是代理人模式?

考量以下準則以在編輯模式和代理人模式之間做選擇

  • 編輯範圍:如果您的要求僅涉及程式碼編輯,而且您知道變更的精確範圍,則可能會使用編輯模式。
  • 持續時間:代理人模式涉及多個步驟來處理要求,因此可能需要較長時間才能獲得回應。例如,判斷相關內容和要編輯的檔案、判斷行動方案等等。
  • 非決定性:代理人模式會評估產生編輯的結果,並可能反覆執行多次。因此,代理人模式可能比編輯模式更具非決定性。
  • 要求配額:在代理人模式中,根據工作的複雜程度,一個提示可能會導致對後端的許多要求。