在 VS Code 中使用編輯模式
透過 Visual Studio Code 中的聊天編輯模式,您可以使用自然語言在專案中的多個檔案中進行編輯。編輯會直接套用在編輯器中,您可以在編輯器中檢閱這些編輯,並完整掌握周圍程式碼的內容。
透過選取特定檔案並提供明確的內容,您可以引導編輯模式進行目標明確的程式碼變更和改進。
如果您還沒有 Copilot 訂閱,您可以註冊 Copilot 免費方案,即可免費使用 Copilot,並獲得每月完成次數和聊天互動的限制。
使用編輯模式
在編輯模式中,您選取要編輯的檔案,並提供相關的內容和提示。Copilot 會根據您的提示建議程式碼編輯。
-
從 VS Code 標題列的 Copilot 功能表中選取 [開啟聊天],或使用 ⌃⌘I (Windows、Linux Ctrl+Alt+I) 鍵盤快速鍵,以開啟 [聊天] 檢視。
-
從 [聊天] 檢視中的聊天模式下拉式選單中選取 [詢問]。
-
選取 [新增內容] 以指出提示的相關內容。
為了確保 Copilot 擁有您想要進行變更的正確內容,請將內容新增至您的提示,例如工作區中的檔案或資料夾。深入了解如何新增內容至 Copilot 提示。
使用中的編輯器會自動新增為內容。當您新增檔案時,可能會建議其他相關檔案。
-
在聊天輸入欄位中輸入您的提示,以指出您想要進行的編輯類型。
試用以下一些範例問題以開始使用
重構 calculate 函式,使其更有效率。
在應用程式中新增登入表單。使用 OAuth 進行驗證。
為計算機類別新增單元測試。使用 vitest 作為測試框架。
-
請注意,Copilot 會將建議的編輯直接串流到編輯器中。
[聊天] 檢視會以粗體文字顯示已編輯檔案的清單。編輯器覆疊控制項可讓您在建議的編輯之間導覽。
-
檢閱建議的編輯,並接受或捨棄建議的編輯。
-
繼續反覆修改程式碼變更,以精簡編輯或實作其他功能。
接受或捨棄編輯
Copilot 會在 [聊天] 檢視的已變更檔案清單中列出已編輯的檔案。具有擱置編輯的檔案在 [檔案總管] 檢視和編輯器索引標籤中也會有指示符。
透過編輯器覆疊控制項,您可以使用 向上 () 和 向下 () 控制項在建議的編輯之間導覽。使用 [保留] 或 [復原] 按鈕來接受或拒絕指定檔案的編輯。
使用編輯器或 [聊天] 檢視中的 [保留] 或 [復原] 控制項來接受或拒絕個別或所有建議的編輯。
透過 chat.editing.autoAcceptDelay 設定,您可以設定延遲時間,在延遲時間過後,建議的編輯會自動接受。將滑鼠游標停留在編輯器覆疊控制項上方,以取消自動接受倒數計時。
當您關閉 VS Code 時,系統會記住擱置編輯的狀態。當您重新開啟 VS Code 時,擱置編輯會還原,您仍然可以接受或捨棄編輯。
還原編輯
當您傳送要求以編輯程式碼時,您可能想要回溯其中一些變更,例如因為您想要使用另一個實作策略,或因為 Copilot 在產生編輯時開始走錯方向。
您可以使用 [聊天] 檢視標題列中的 [復原上次編輯] 控制項,以還原上次編輯並返回傳送上次要求之前的狀態。在您執行復原上次編輯之後,您可以再次使用 [聊天] 檢視標題列中的 [重做上次編輯] 控制項來重做這些編輯。
當您將滑鼠游標停留在 [Copilot 編輯] 檢視中的要求上方時,您也可以使用 [復原編輯 (刪除)] 控制項 (x 圖示) 來還原從該要求之後所做的所有編輯。
設定
以下清單包含與編輯模式相關的設定。您可以透過 [設定編輯器] (⌘, (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 中的自訂版面配置。
我為什麼要使用編輯模式而不是代理人模式?
考量以下準則以在編輯模式和代理人模式之間做選擇
- 編輯範圍:如果您的要求僅涉及程式碼編輯,而且您知道變更的精確範圍,則可能會使用編輯模式。
- 持續時間:代理人模式涉及多個步驟來處理要求,因此可能需要較長時間才能獲得回應。例如,判斷相關內容和要編輯的檔案、判斷行動方案等等。
- 非決定性:代理人模式會評估產生編輯的結果,並可能反覆執行多次。因此,代理人模式可能比編輯模式更具非決定性。
- 要求配額:在代理人模式中,根據工作的複雜程度,一個提示可能會導致對後端的許多要求。