2020 年 1 月 (版本 1.42)
更新 1.42.1:此更新解決了這些 問題。
下載:Windows:x64 | Mac:Intel | Linux:deb rpm tarball snap
歡迎使用 Visual Studio Code 2020 年 1 月發行版本。此版本包含許多更新,我們希望您會喜歡,其中一些主要重點包括
- 重新命名預覽 - 在差異檢視中查看擱置中的重新命名,並輕鬆接受或拒絕變更。
- 開啟編輯器限制 - 設定一次開啟的編輯器數量上限。
- 面板位置 - 將面板 (輸出、終端機) 移至編輯器的左側、右側或下方。
- 折疊程式碼醒目提示 - 使用新的背景醒目提示快速尋找折疊區域。
- 偵錯主控台改進 - 語法醒目提示、括號比對、輸入歷程記錄。
- 定義全域工作 - 每個使用者的工作可以在您所有的資料夾和工作區中使用。
- Java 擴充功能更新 - Java 支援資料中斷點和呼叫階層檢視。
- 遠端開發 - 新的轉發連接埠檢視,用於對應 SSH 和容器連接埠。
- 新的容器教學課程 - 了解如何建立和部署 Docker 容器。
- 預覽功能 - 初次體驗時間軸檢視、搜尋編輯器、語意醒目提示等等。
如果您想在線上閱讀這些版本資訊,請前往 更新,網址為 code.visualstudio.com。
Insiders:想盡快看到新功能嗎?您可以下載每晚的 Insiders 組建,並在最新更新可用時立即試用。如需最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上追蹤我們 @code!
工作台
重新命名預覽
Visual Studio Code 現在可讓您預覽 重新命名 變更。重新命名時,您可以透過 ⌘Enter (Windows、Linux Ctrl+Enter) 確認新名稱,並查看 重構預覽 面板。它會在差異編輯器中顯示擱置中的變更,並讓您取消勾選/勾選個別變更。一旦重新命名套用 (或中止) 後,差異編輯器和預覽面板會關閉,讓您回到目前的編輯器。
主題:GitHub Sharp,字型:FiraCode
限制開啟編輯器的數量
有新的設定可以限制一次開啟的編輯器數量上限。
workbench.editor.limit.enabled
:啟用此功能 (預設為關閉)。workbench.editor.limit.perEditorGroup
:是否要依編輯器群組或跨所有群組套用限制。workbench.editor.limit.value
:開啟編輯器的數量上限 (預設為 10)。
如果啟用,當您開啟新的編輯器時,VS Code 將關閉最近最少使用的編輯器。
您可以在下方看到限制設定為 3 時的行為
主題:Nord
注意:未儲存變更的未儲存編輯器 (具有未儲存變更的檔案) 永遠不會自動關閉,但仍計入開啟編輯器的總數中。
未命名編輯器改進
VS Code 中的未命名編輯器是尚未儲存到磁碟的文字緩衝區。您可以讓它們保持開啟狀態,時間長度不限,所有文字內容都會在重新啟動之間儲存和還原。
未命名編輯器標題
過去,未命名編輯器會被賦予一般名稱,例如 Untitled-1
,依序遞增。在此版本中,未命名編輯器將使用文件第一行的內容作為編輯器標題,並包含一般名稱作為描述
主題:Nord
注意:如果第一行為空白或不包含任何文字,標題將會回復為 Untitled-*
,如同之前一樣。
預設語言模式
依預設,未命名檔案沒有設定特定的語言模式。VS Code 有一個設定 files.defaultLanguage
,可以為未命名檔案設定預設語言。在此版本中,此設定可以採用新的值 {activeEditorLanguage}
,它將動態使用目前使用中編輯器的語言模式,而不是固定的預設值。
此外,當您將文字複製並貼到未命名編輯器中時,如果文字是從 VS Code 編輯器複製而來,VS Code 現在會自動變更未命名編輯器的語言模式
主題:One Dark Pro
注意:如果未命名編輯器已經指定語言模式,貼上文字將不會變更它。
導覽最近使用的編輯器
在此版本中,現在有一個跨所有編輯器群組的最近使用 (MRU) 編輯器清單。當編輯器作為使用中編輯器開啟,或在已開啟時變成新的使用中編輯器時,即視為最近使用。一旦編輯器關閉,就會從此清單中移除。
此清單的一個應用是新的 edt mru
選擇器,您可以透過新的 檢視:依最近使用顯示所有編輯器 (workbench.action.showAllEditorsByMostRecentlyUsed
) 命令開啟
您可以新增鍵盤快速鍵,以便在不使用滑鼠的情況下快速導覽此選擇器。例如,以下是鍵盤繫結,讓 Ctrl+Tab 和 Ctrl+Shift+Tab 可以跨所有群組的編輯器導覽 (而不是像預設鍵盤繫結一樣僅在使用中群組中導覽)
[
{
"key": "ctrl+tab",
"command": "workbench.action.quickOpenPreviousRecentlyUsedEditor",
"when": "!inEditorsPicker"
},
{
"key": "ctrl+shift+tab",
"command": "workbench.action.quickOpenLeastRecentlyUsedEditor",
"when": "!inEditorsPicker"
}
]
如果您想在不使用選擇器的情況下導覽清單,可以使用新的命令
- 檢視:開啟下一個最近使用的編輯器 (
workbench.action.openNextRecentlyUsedEditor
) - 檢視:開啟上一個最近使用的編輯器 (
workbench.action.openPreviousRecentlyUsedEditor
)
為了區分哪些編輯器導覽命令與選擇器搭配使用,哪些不搭配使用,某些現有命令的行為已變更。具體而言,「群組中最近使用的編輯器」命令不再使用選擇器
- 檢視:開啟群組中下一個最近使用的編輯器 (
workbench.action.openNextRecentlyUsedEditorInGroup
) - 檢視:開啟群組中上一個最近使用的編輯器 (
workbench.action.openPreviousRecentlyUsedEditorInGroup
)
若要使用以選擇器為基礎的導覽
- 檢視:快速開啟群組中上一個最近使用的編輯器 (
workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup
) - 檢視:快速開啟群組中最近最少使用的編輯器 (
workbench.action.quickOpenLeastRecentlyUsedEditorInGroup
)
移動面板
面板 (包含輸出、偵錯主控台、終端機和問題窗格) 現在可以移至編輯器的左側。
命令 檢視:切換面板位置 (workbench.action.togglePanelPosition
) 已移除,改為使用下列新命令
- 檢視:向左移動面板 (
workbench.action.positionPanelLeft
) - 檢視:向右移動面板 (
workbench.action.positionPanelRight
) - 檢視:將面板移至底部 (
workbench.action.positionPanelBottom
)
在重新啟動時還原所有視窗
VS Code 用於在啟動時還原視窗的設定已變更為預設還原所有視窗。如果您想回到先前的行為,請設定 "window.restoreWindows": "one"
以僅開啟單一視窗。
儲存衝突解決
當您嘗試儲存在 VS Code 外部或由另一個程式 (例如 Git) 變更的未儲存檔案時,VS Code 有一個內建機制可以顯示通知
這樣做的目的是要通知您,即使檔案在變成未儲存狀態後已變更,儲存仍會覆寫磁碟上的內容。選取 比較 按鈕可讓您檢閱您的變更以及磁碟上的版本,並選擇覆寫或還原檔案。
如果您知道磁碟上的變更可以覆寫,則現在在通知上直接有一個 覆寫 按鈕。您也可以全域、依工作區或檔案類型設定 files.saveConflictResolution
,以完全停用此行為。選項為 askUser
(預設) 或 overwriteFileOnDisk
。
處理緩慢的儲存作業
VS Code 允許擴充功能在將檔案儲存到磁碟時變更檔案的內容。「儲存時格式化」和「儲存時修正」等功能就是範例。但是,儲存是一項重要的作業,在儲存期間執行處理的擴充功能必須快速完成,實際的儲存作業才能繼續進行。「快速」過去是由 VS Code 強制執行,VS Code 會在逾時後取消擴充功能儲存作業。該強制執行保證了快速儲存,但可能會令人沮喪,因為有時預期的處理不會發生。
在此版本中,我們放棄了以逾時為基礎的方法,而是顯示進度通知,讓您可以取消參與儲存的擴充功能 ("儲存參與者")。通知會讓您知道儲存作業正在執行,您可以決定是否要等待儲存參與者完成。
主題:Light+
原始檔控制輸入
「原始檔控制」檢視中的輸入方塊現在使用 Monaco Editor。Monaco Editor 支援實用的功能,例如多個游標和移動/複製行命令。
多根目錄 Explorer 中的兩步驟摺疊
當您使用 多根目錄工作區時,「檔案總管」中的 摺疊資料夾 按鈕現在具有兩步驟行為。第一次按一下會摺疊每個最上層資料夾內的所有資料夾,第二次按一下會摺疊最上層資料夾。「搜尋」檢視已具有此行為。
主題:Monokai
根據 OS 色彩配置自動切換主題
Windows 和 macOS 現在支援淺色和深色色彩配置。有一個新的設定 window.autoDetectColorScheme
,指示 VS Code 監聽 OS 色彩配置的變更,並相應地切換到相符的主題。
若要自訂色彩配置變更時使用的主題,您可以使用下列設定設定慣用的淺色和深色主題
workbench.preferredLightColorTheme
workbench.preferredDarkColorTheme
編輯器
控制「查看」檢視焦點
有一個新的設定和命令可以控制「查看」檢視初始放置焦點的位置。依預設,「查看」會將焦點放在右手邊的樹狀結構上,以便您可以快速導覽至參考。「查看」的初始焦點放在樹狀結構上,對於想要使用「查看」在編輯器中進行快速程式碼變更的人來說並不是最佳選擇。您現在可以使用 editor.peekWidgetDefaultFocus
設定定義您的偏好設定,它可以設定為 editor
或 tree
。還有一個新的命令 togglePeekWidgetFocus
(⌘K F2 (Windows、Linux Ctrl+K F2)) 可讓您在「查看」編輯器和樹狀結構之間移動焦點。
折疊區域醒目提示
現在更容易發現折疊程式碼區域,因為新增了背景醒目提示。
主題:Dark+
此功能由設定 editor.foldingHighlight
控制,顏色可以使用顏色 editor.foldBackground
自訂。
"workbench.colorCustomizations": {
"editor.foldBackground": "#355000"
}
折疊改進
按住 Shift
並在折疊指示器上按一下一次,即可先折疊內部範圍。再次按住 Shift
並按一下 (當所有內部範圍都已折疊時) 將會折疊父系。再次按住 Shift
並按一下會展開所有項目。
當在已折疊的範圍上使用 折疊 命令 (⌥⌘[ (Windows、Linux Ctrl+Shift+[)) 時,下一個未折疊的父系範圍將會被折疊。
新的換行選項
依預設,編輯器會假設所有字元的寬度都相同來計算自動換行符號。此假設可讓預設演算法快速運作,但在使用非等寬字型,或在字元寬度不同的指令碼中撰寫文字時,其結果不佳。有一個新的設定 editor.wrappingStrategy
,可以設定為 advanced
,讓編輯器將自動換行符號計算委派給瀏覽器。
協助工具
建議小工具改進
建議小工具現在不再使用 ARIA 警示,並正確地向螢幕閱讀器指示它已聚焦。這應該可以防止螢幕閱讀器意外地造成干擾。
當偵測到螢幕閱讀器時,editor.accessibilityPageSize 設定為 160
editor.accessibilityPageSize
設定控制螢幕閱讀器一次可以讀出的編輯器行數。但是,使用較大的值會對效能造成影響。我們已決定在偵測到螢幕閱讀器時自動將值設定為 160 行 (且不超過,因為 NVDA 錯誤)。
搭配 Orca 的 Linux 協助工具
我們已開始研究如何使用 Orca 螢幕閱讀器讓 VS Code 在 Linux 上可存取。但是,由於此工作需要 Electron 7,我們預期在下一個穩定版本中取得更多進展。同時,對於 Linux 協助工具,您可以使用我們的 Insiders 版本並提供意見反應。
整合式終端機
捲動靈敏度
現在可以使用新的設定獨立於編輯器設定終端機的捲動靈敏度
terminal.integrated.mouseWheelScrollSensitivity
- 滑鼠滾輪捲動乘數 (預設為 1)。terminal.integrated.fastScrollSensitivity
- 按下 Alt 時的快速捲動乘數 (預設為 5)。
偵錯
簡化的初始偵錯檢視
為了簡化偵錯檢視的啟動,VS Code 現在只顯示一個 執行並偵錯 按鈕。不偵錯執行 動作 (並非所有偵錯工具都支援) 仍然在「偵錯」主功能表中可用。
根據使用者意見反應,如果您至少設定一個中斷點,則「中斷點」窗格會顯示在啟動檢視中。
偵錯主控台改進
偵錯主控台輸入
「偵錯主控台」輸入現在使用目前使用中編輯器的語言模式。這表示「偵錯主控台」輸入支援語法色彩、縮排、自動關閉引號和其他語言功能。
輸入/輸出呈現
我們已調整「偵錯主控台」中輸入和輸出的呈現方式,使其更易於區分。VS Code 只在輸入運算式旁邊顯示箭頭。
偵錯主控台輸入歷程記錄建議
「偵錯主控台」輸入方塊現在會自動建議先前輸入的項目。文字圖示用於區分歷程記錄建議與其他 IntelliSense 項目。
在偵錯後隱藏「偵錯主控台」
有一個新的設定 debug.console.closeOnEnd
,控制在偵錯停止後是否應自動關閉「偵錯主控台」。
支援 console.table(...)
「偵錯主控台」現在可以顯示來自 Node.js console.table(...)
API 的輸出。
已載入指令碼檢視改進
「已載入指令碼」檢視已更新為使用 VS Code 的新樹狀結構檢視。它現在以與 VS Code 「檔案總管」相同的精簡形式呈現單一子資料夾。此外,現在可以邊輸入邊搜尋和展開樹狀結構
我們計劃在下一個版本中移除 偵錯:開啟已載入指令碼 命令,因為它重複了樹狀結構的「邊輸入邊搜尋和展開」功能。
啟動組態排序和群組
啟動組態和複合組態現在支援新的結構化屬性 presentation
。使用 order
、group
和 hidden
屬性,您可以在「偵錯」組態下拉式清單和「偵錯快速選取」中排序、群組和隱藏組態和複合組態。
例如,launch.json
中的啟動組態可以具有下列 presentation
欄位
"presentation": {
"group": "5_tests",
"order": 10,
"hidden": false
}
例如,我們已將 presentation 新增至某些 VS Code 自己的啟動組態,以便以更有意義的方式對它們進行群組,並隱藏那些僅為複合啟動組態一部分的組態。
偵錯活動列圖示和裝飾
根據使用者意見反應,我們已更新活動列中的「偵錯」圖示,以更好地表示 執行並偵錯。偵錯時,「偵錯」圖示上會有數字裝飾,以顯示使用中偵錯工作階段的計數。
工作
使用者層級工作
在 tasks.json
中宣告的工作現在在「使用者設定」層級受到支援。如果您有一個跨多個專案使用的組建指令碼,或者如果您不希望您的工作在專案資料夾中,您可以將您的工作新增至使用者 tasks.json
檔案中。執行 工作:開啟使用者工作 命令以建立使用者層級工作,這些工作將在所有資料夾和工作區中都可用。這裡僅支援 shell
和 process
工作類型。
輸入 pickString 標籤
如果您使用工作 inputs
,您可以將友善的標籤新增至 pickString
輸入 options
"inputs": [
{
"id": "pickAnInputValue",
"description": "Pick a Value",
"type": "pickString",
"options": [
"first-value",
{
"label": "Second Value",
"value": "second-long-value-that-can-be-simplified-for-display"
}
],
"default": "first-value"
}
]
標籤將顯示為
語言
TypeScript 3.7.5
我們已將我們捆綁的 TypeScript 版本更新為 3.7.5。此小更新包含一些重要的錯誤修正,包括修正 Windows 上未儲存在 C: 磁碟機上的專案的 IntelliSense。
HTML 鏡像游標預設為關閉
HTML 鏡像游標現在是選擇加入功能。在即將到來的反覆運算中,我們將繼續 改進其實作,以使此功能更易於理解,並可供更多語言使用。您仍然可以透過開啟 html.mirrorCursorOnMatchingTag
來使用此功能。
預覽功能
預覽功能尚未準備好發行,但功能已足夠使用。我們歡迎您在開發期間提供早期意見反應。
時間軸檢視
在此里程碑中,我們在新的「時間軸」檢視方面取得了進展,並有一個早期預覽可以分享。這是用於視覺化資源 (檔案、資料夾) 的時間序列事件 (例如,Git 提交、檔案儲存、測試執行等等) 的統一檢視。若要啟用「時間軸」檢視,您必須使用 Insiders 版本,然後新增下列設定
"timeline.showView": true
您可以在下方看到「時間軸」檢視顯示檔案的 Git 提交歷程記錄
在此早期預覽中,「時間軸」檢視會顯示使用中文件的 Git 提交歷程記錄,目前限制為 32 個項目。選取其中一個提交將會開啟該提交所引入變更的差異檢視。擴充功能也將能夠 貢獻自己的時間軸來源,這些來源將會顯示在此統一的時間軸檢視中。最終,您也可以選取 (篩選) 您想要在檢視中看到的來源。
請繼續關注,我們為此新功能準備了更多內容。您可以透過訂閱 問題 #84297 並關注標記為 'timeline' 標籤的問題來追蹤進度。如果您對您想在此檢視中看到的其他類型資訊有任何想法,請告訴我們!
搜尋編輯器
我們已繼續開發新的「搜尋編輯器」,此反覆運算的目標是讓「搜尋編輯器」成為主要的搜尋體驗。為此,我們實作了一個 UI,用於設定「搜尋編輯器」的查詢
主題:Noctis Lilac,字型:Hasklig
現在「搜尋編輯器」有數個命令,您可以將其繫結到您選擇的鍵盤快速鍵
search.action.openNewEditor
:在使用中編輯器群組中開啟新的搜尋編輯器。search.action.openInEditor
:將目前的搜尋結果複製到新的搜尋編輯器中。
如需更多資訊和關於「搜尋編輯器」的進一步更新,請參閱 問題 #23931。
注意:「搜尋編輯器」在 Insiders 中預設為啟用,並且可以透過將 search.enableSearchEditorPreview
設定為 true
在 Stable 中選擇加入。
TypeScript 和 JavaScript 的語意醒目提示
TypeScript 和 JavaScript 的語意醒目提示支援正在開發中,且預設尚未啟用。您可以透過新增下列設定來試用它
"editor.semanticHighlighting.enabled": true
啟用後,您會看到某些識別項具有新的色彩和樣式,現在會根據其已解析的類型進行醒目提示。預設語法 (TextMate) 醒目提示器將許多語彙基元分類為 variables
,而這些變數現在會解析為命名空間、類別、參數等等。
您可以在匯入區段中看到最佳效果,現在每個匯入的符號都會以符號的類型著色
您可以使用 開發人員:檢查編輯器語彙基元和範圍 命令來檢查為每個位置計算的語意和語法語彙基元。
新的 JavaScript 偵錯工具
我們一直在開發適用於 Node.js 和 Chrome 的新偵錯工具。它預設安裝在 Insiders 上,並且可以從 VS Code Stable 中的 Marketplace 安裝。您可以透過啟用 debug.javascript.usePreview
設定,開始將它與您現有的啟動組態搭配使用。以下是我們本月新增的一些新功能。
新的 JS 偵錯工具將自動偵錯您在新 JavaScript 偵錯終端機中執行的命令,您可以透過 偵錯:建立 JavaScript 偵錯終端機 命令開啟該終端機
主題:Earthsong,字型:Fira Code
新的偵錯工具也在您 package.json
的 scripts
區段中提供 偵錯 CodeLens,可以執行和偵錯指令碼,而無需額外組態
您可以透過 debug.javascript.codelens.npmScripts
設定設定 CodeLens 的可見性和位置 (頂端或內嵌)。
試用看看!如果您在使用新偵錯工具時遇到任何問題,可以在 vscode-js-debug 存放庫中提交問題。
將檢視從側邊欄移至面板
正在積極進行工作,以簡化自訂 VS Code 版面的程序。您可以使用下列設定測試進度
"workbench.view.experimental.allowMovingToNewContainer": true
啟用此設定後,某些檢視會有一個新的內容功能表項目,可在側邊欄和面板之間移動它們。目前,此設定僅影響「總管」中的「大綱」檢視和擴充功能貢獻的檢視。您也無法像在側邊欄中一樣在面板中合併這些檢視。
主題:LaserWave,字型:Cascadia Code
這僅是功能的預覽,其許多方面都可能會變更,包括上述限制。歡迎隨時查看我們的 Insiders 版本中的進一步進展。
關於搜尋的注意事項:使用新的通用檢視移動方法,「搜尋」檢視的舊設定 search.location
和命令 搜尋:切換搜尋檢視位置 (search.action.toggleSearchViewPosition
) 已被取代。您的設定應該會自動移轉,但您需要使用新的通用方法來移動未來的「搜尋」檢視。您不需要啟用上述實驗性預覽設定,即可使用新的內容功能表項目移動「搜尋」檢視。
TypeScript 3.8 Beta 支援
雖然 VS Code 在下個月正式發行之前不會捆綁 TypeScript 3.8,但在此反覆運算中,我們新增了對所有 令人興奮的新 TypeScript 3.8-beta 功能 的支援。
這些包括
- JavaScript 和 TypeScript 檔案中私有欄位的 IntelliSense 和語法醒目提示。
- JavaScript 和 TypeScript 的呼叫階層支援。
- 轉換為樣板字串重構!
您可以透過安裝 TypeScript Nightly 擴充功能,立即輕鬆試用所有這些新的 TypeScript 3.8 功能。如果您在使用 TypeScript 3.8 Beta 時遇到任何錯誤,請分享意見反應並告訴我們!
擴充功能貢獻
Java 偵錯工具支援資料中斷點
Java 偵錯工具 擴充功能現在支援 資料中斷點,這是 VS Code 1.38 中引入的功能。此功能可讓您建立在中斷點,當變數的值變更時,就會命中這些中斷點。
您可以在下方看到偵錯工具在 Owner.telephone
字串變更時中斷
Java 呼叫階層檢視
Java 語言支援 擴充功能現在支援 呼叫階層 檢視,它會顯示從函式或到函式的所有呼叫,並讓您可以深入探究呼叫者的呼叫者和呼叫的呼叫。
在符號上按一下滑鼠右鍵,然後選取 查看 > 查看呼叫階層 以查看呼叫階層
遠端開發
遠端開發 擴充功能 的開發工作仍在繼續,這些擴充功能可讓您使用容器、遠端電腦或 Windows Linux 子系統 (WSL) 作為全功能開發環境。
1.42 中的功能重點包括
- Remote - SSH:改進了對 Windows 伺服器的支援,包括自動 OS 偵測。
- WSL:支援 在檔案總管中顯示,以開啟 WSL 資源的 Windows 檔案總管。
- Dev Containers:預先建置的容器映像,其中包含 Git 和 zsh 等相依性。
- 轉發連接埠檢視:對應、檢視和重複使用 SSH 和容器連接埠。
您可以在 遠端開發版本資訊 中了解新的擴充功能功能和錯誤修正。
擴充功能撰寫
Codicons 以供重複使用
對於大多數 VS Code 圖示,都使用 codicon 圖示字型。擴充功能現在可以以簡單且宣告式的方式重複使用這些圖示
vscode.ThemeIcon
類型現在可以使用 codicon 的名稱來具現化。例如,new vscode.ThemeIcon("zap")
。vscode.MarkdownString
類型現在支援$(<name>)
內嵌語法。例如,myMdString.appendMarkdown('Hello $(globe)');
。請注意,若要在 MarkdownString 中使用 codicons,您必須啟用supportThemeIcons
建構函式引數。- 擴充套件的
package.json
檔案中定義的commands
現在可以使用 codicon 作為圖示。使用行內語法,例如"icon": "$(zap)"
。
主題:Light+
上面的 hover 範例正在渲染每個可用的 codicon。hover 是使用下面的程式碼片段建立的,但為了可讀性,大多數 codicon 名稱已從 all
常數中移除。
vscode.languages.registerHoverProvider(
'*',
new (class implements vscode.HoverProvider {
provideHover(doc: vscode.TextDocument, pos: vscode.Position) {
const all = `$(activate-breakpoints)$(add)...$(zoom-out)`;
const md = new vscode.MarkdownString(all, true);
return new vscode.Hover(md, doc.getWordRangeAtPosition(pos));
}
})()
);
完成項目的插入和取代
在單字結尾觸發的完成通常會取代該單字。但是,當完成在單字內部觸發時,單字結尾是否應該被取代並不清楚。根據擴充套件作者的偏好,使用者會得到其中一種行為。這並不理想,現在有一個 API 可以表達完成項目的插入和取代範圍。
為此,我們為 CompletionItem#range
新增了一個 OR 類型
export class CompletionItem {
range?: Range | { inserting: Range; replacing: Range };
//...
}
- 如果範圍是
undefined
,則 VS Code 會使用目前單字範圍進行取代,並使用游標位置裁剪的相同範圍進行插入。 - 如果範圍是簡單的
vscode.Range
,則 VS Code 知道只有一個位置用於插入或取代。 - 如果範圍是一個具有
inserting
和replacing
範圍的物件,VS Code 將直接使用它們。
此資訊與 editor.suggest.insertMode
設定結合使用,該設定允許使用者定義他們的偏好。我們要求擴充套件作者儘快採用此 API,因為我們計劃在下一個版本中讓插入和取代行為更加明顯。
精進的 CallHierarchyProvider
我們對 CallHierarchyProvider#prepareCallHierarchy 進行了小幅變更,使其現在可以傳回一個或多個 CallHierarchyItem
元素。當要求元素上具有多個多載的呼叫階層時,many
選項非常有用。
在終端機上公開建立選項
Terminal
物件有一個新的 creationOptions
屬性,擴充套件可以使用它來識別終端機的建立方式。
語言特定的設定
擴充套件現在可以使用新的組態範圍 language-overridable
來貢獻可由語言覆寫的設定。
範例
"contributes": {
"configuration": {
"title": "sample",
"properties": {
"sample.languageSetting": {
"type": "boolean",
"scope": "language-overridable"
}
}
}
}
組態 API 經過增強以支援這些設定。您可以使用 API 並傳遞必要的 languageId
來讀取和更新這些設定。
範例
/**
* Read language configuration.
*/
const textDocumentConfiguration = vscode.workspace.getConfiguration('sample', {resource, languageId});
textDocumentConfiguration.get('languageSetting');
/**
* Override configuration under language
*/
textDocumentConfiguration.update('languageSetting', false, ConfigurationTarget.Global, true);
/**
* Listen language configuration changes
*/
workspace.onDidChangeConfiguration(e => {
if(e.affectsConfiguration('sample.languageSetting', {resource, languageId}) {
}
});
如需更多資訊,請參閱 組態 API。
擴充功能檢視上下文選單
您現在可以使用新的選單位置 extension/context
,將命令貢獻到擴充功能檢視中的擴充功能上下文選單。
範例
"contributes": {
"commands": [
{
"command": "extension.helloWorld",
"title": "Hello World"
}
],
"menus": {
"extension/context": [
{
"command": "extension.helloWorld",
"group": "2_configure",
"when": "extensionStatus==installed",
}
]
}
}
當命令執行時,擴充功能的 ID 將作為引數傳遞。
範例
vscode.commands.registerCommand('extension.helloWorld', extensionId => {
vscode.window.showInformationMessage(extensionId);
});
支援以下預定義的上下文,您可以在命令的 when
條件中使用它們
extensionStatus==installed
isBuiltinExtension
DebugConfigurationProvider hook 用於存取替換變數
偵錯的擴充功能 API 在 DebugConfigurationProvider
上提供了一個 hook resolveDebugConfiguration
,可用於在偵錯組態傳遞到偵錯配接器之前驗證它。由於此 hook 是在變數被替換之前呼叫的,因此驗證程式碼可以輕鬆地將更多變數新增到偵錯組態中,並且仍然可以及時替換它們。
這種方法可能會使在 resolveDebugConfiguration
hook 中使用已解析的變數值變得困難,例如,驗證或實作僅存在於擴充功能中的功能(而不是在偵錯配接器中,替換後的值是可用的)。請參閱 issue #85206 以取得範例。一些擴充功能已開始自行替換變數(這通常是不完整的,因為它不涵蓋所有情況)。
從使用者的角度來看,這是令人困惑的。在偵錯組態中,可以使用某些屬性變數(因為它們在替換發生後在偵錯配接器中處理),而某些屬性變數不能使用(因為它們在擴充功能中處理,而替換尚未發生)。Issue #87450 是後一個問題的一個很好的例子。
在這個里程碑中,我們透過在 DebugConfigurationProvider
中新增第二個 hook resolveDebugConfigurationWithSubstitutedVariables
來解決這個問題,該 hook 接收具有所有變數都已替換的偵錯組態。
隨著這個新 API 的可用性,我們要求所有偵錯擴充套件作者仔細檢查他們目前 DebugConfigurationProvider.resolveDebugConfiguration
的實作,並將所有不引入新變數,但可以從已替換的變數中獲益的程式碼移至新的方法 resolveDebugConfigurationWithSubstitutedVariables
。
在擴充套件內部實作偵錯配接器
現有的偵錯擴充功能 API 支援註冊 DebugAdapterDescriptorFactory
以多種方式執行偵錯配接器。
作為外部程序
vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor: _session => {
return new vscode.DebugAdapterExecutable('mockDebug.exe');
}
});
作為網路連線
vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor: _session => {
return new vscode.DebugAdapterServer(12345, 'localhost');
}
});
在這個里程碑中,我們新增了第三種變體,可以在其中提供偵錯配接器的「行內」實作
vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor: _session => {
return new vscode.DebugAdapterInlineImplementation(new InlineDebugAdapter());
}
});
這消除了透過基於串流的機制與配接器通訊的需求,並簡化了開發,因為配接器在擴充功能內部執行,並且可以輕鬆地作為 VS Code 擴充功能偵錯的一部分進行偵錯。
行內實作(例如,上面的 InlineDebugAdapter
)需要實作 偵錯配接器協定。由於我們不想在 VS Code 的擴充功能 API 中包含完整的偵錯配接器協定,因此我們引入了該協定的最小子集。介面 vscode.DebugAdapter
只有兩個方法,一個用於將 DAP 訊息傳遞給配接器 (handleMessage
),另一個用於監聽從配接器接收的 DAP 訊息 (onDidSendMessage
)。
基於此介面,偵錯配接器的實作將從以下原始碼開始
class InlineDebugAdapter implements vscode.DebugAdapter {
private sendMessage = new vscode.EventEmitter<DebugProtocol.ProtocolMessage>();
private sequence: 1;
readonly onDidSendMessage: vscode.Event<DebugProtocol.ProtocolMessage> = this.sendMessage
.event;
handleMessage(message: DebugProtocol.ProtocolMessage): void {
switch (message.type) {
case 'request':
const request = <DebugProtocol.Request>message;
switch (request.command) {
case 'initialize':
const response: DebugProtocol.Response = {
type: 'response',
seq: this.sequence++,
success: true,
request_seq: request.seq,
command: request.command
};
this.sendMessage.fire(response);
break;
// many more requests needs to be handled here...
default:
break;
}
break;
case 'response':
break;
case 'event':
break;
}
}
dispose() {
// clean up resources
}
}
由於偵錯配接器協定(作為 node 模組 vscode-debugprotocol 提供)是 vscode.DebugAdapter
介面的相容超集,因此如果您需要完整協定並想完全自行實作偵錯配接器,則可以匯入該模組。
一個更簡單的替代方案是(繼續)使用我們的偵錯配接器預設實作,作為 node 模組 vscode-debugadapter 提供。從 1.38.0-pre.4 版本開始,此模組中引入的 DebugSession
(或 LoggingDebugSession
)與擴充功能 API 中定義的介面 vscode.DebugAdapter
相容。
透過此 API,可以輕鬆地像這樣使用現有的偵錯配接器實作
vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor: _session => {
return new vscode.DebugAdapterInlineImplementation(new MockDebugSession());
}
});
有關詳細資訊,請參閱 Mock debug 範例。
注意: 在此版本中,我們已完成用於建立偵錯配接器的擴充功能 API。因此,我們宣布我們將在 3 月版本中移除對 debuggers
貢獻點的兩個已棄用屬性的支援
adapterExecutableCommand
- 請改用擴充功能 APIvscode.DebugAdapterDescriptorFactory
和vscode.DebugAdapterExecutable
。Mock debug 範例 示範如何使用 API。enableBreakpointsFor
- 請改用breakpoints
貢獻點。轉換需要在package.json
中完成。
如果目前的(已棄用的)JSON 如下所示
"contributes": {
"debuggers": [{
"type": "csharp",
// ...
"enableBreakpointsFor": [ "csharp", "razor" ]
// ...
}]
轉換將會是
"contributes": {
"breakpoints": [
{ "language": "csharp" },
{ "language": "razor" }
],
"debuggers": [{
"type": "csharp",
// ...
}]
我們建議受影響的擴充套件在二月份的時間範圍內調整其對新 API 的實作,以便我們有足夠的時間在三月份之前修復問題。
建議的擴充功能 API
每個里程碑都帶有新的建議 API,擴充套件作者可以試用它們。與往常一樣,我們渴望您的回饋。這是您試用建議 API 必須執行的操作
- 您必須使用 Insiders 版本,因為建議 API 經常變更。
- 您必須在擴充套件的
package.json
檔案中包含此行:"enableProposedApi": true
。 - 將最新版本的 vscode.proposed.d.ts 檔案複製到專案的原始碼位置。
請注意,您無法發布使用建議 API 的擴充套件。下一個版本中可能會出現重大變更,我們絕不希望破壞現有的擴充套件。
新增工作區編輯中繼資料
現在 VS Code 中的「重構預覽」支援帶有一個新的、可選的 API 提案。它允許您對工作區編輯的變更進行分類。例如,您可以定義變更是否需要使用者確認,或新增諸如「重新命名字串和註解」之類的描述。該提案可以在 issue #77728 中追蹤,其目前設計圍繞 WorkspaceEditMetadata 介面。
語意醒目提示
如果您有興趣為您的語言新增語意醒目提示,語意醒目提示概述 提供了概念和新 API 的摘要。
驗證提供者
某些擴充套件需要驗證到其他服務。 issue #88309 中的提案將使擴充套件可以註冊可由其他擴充套件存取的驗證提供者,從而為執行驗證提供通用機制。
時間軸提供者
擴充功能很快就能夠將它們自己的來源貢獻到新的 時間軸檢視 中。有興趣新增您自己的時間軸來源嗎?請查看 issue #84297 中的這個早期提案,並提供您擁有的任何回饋。
Documentation.Refactoring 貢獻點
建議的 documentation.refactoring
貢獻點讓擴充套件可以為其重構提供文件。使用者可以在請求重構時選擇檢視此文件
建議的貢獻點讓擴充套件可以透過使用命令來控制文件的顯示方式
"contributes": {
"documentation": {
"refactoring": [
{
"title": "Learn more about JS/TS refactorings",
"when": "typescript.isManagedFile",
"command": "_typescript.learnMoreAboutRefactorings"
}
]
}
}
title
— 向使用者顯示的文件動作標籤。when
— When 子句,用於決定何時顯示文件。command
— 顯示文件的命令。例如,此命令可以開啟網頁或直接在 VS Code 中顯示文件。
Issue #86788 追蹤提案的狀態。
自訂編輯器的備份和熱退出 hook
在這個迭代中,我們繼續迭代建議的 自訂編輯器 API。本月我們的主要調查是如何為自訂編輯器啟用 熱退出。Issue #88719 涵蓋了我們在支援熱退出時遇到的一些挑戰,以及我們考慮到的一些方法。
此調查的結果是在 WebviewCustomEditorEditingDelegate
介面上新增了一個可選的 backup
方法。VS Code 會在資源變更後大約一秒鐘呼叫此方法。在 backup
方法內部,擴充套件應在其目前狀態下持久化資源。最常見的情況是將資源寫入工作區儲存資料夾。然後,當重新載入編輯器時,它應該檢查是否存在任何持久化的備份,然後再從工作區本身載入資源。
我們將在下一個迭代中繼續迭代自訂編輯器 API。
複雜的完成標籤
我們正在發展 CompletionItem
API,以容納需要提供限定名稱、匯入路徑、傳回類型和其他資訊的複雜完成項目。資訊必須預先提供,而不是稍後解析。提供的資訊將會行內顯示在建議小工具中。我們將在下一個迭代中迭代 目前的提案。同時,我們正在考慮 在建議小工具中新增狀態列,以解決一些 UI 和可探索性挑戰。我們期待您對 API 的回饋。
佈景主題:Nord,字型:Input Mono
新增診斷錯誤的連結
診斷錯誤現在可以與其錯誤程式碼相關聯連結。當提供連結時,它將顯示在「問題」面板、行內錯誤檢視和診斷錯誤 hover 中。當我們在下一個迭代中繼續處理此功能時,您可以在 issue #11847 中提供回饋。
語言伺服器協定
3.15 版本的 語言伺服器協定 現在可用。我們也發布了適用於 VS Code LSP client 和以 Node.js 撰寫的 LSP 伺服器 的對應 npm 模組。最新版本的程式庫包含語意 token 的建議規格和實作。
LSP 網站現在託管 語言伺服器索引格式規格 的初步版本,以及對應的 LSIF 概述。
瀏覽器支援
將檔案拖放到編輯器中
在瀏覽器中使用 VS Code 時,您現在可以將本機檔案拖放到編輯器區域中,以將它們作為包含檔案內容的 dirty(未儲存)檔案開啟。
新命令
按鍵 | 命令 | 命令 ID |
---|---|---|
將面板向左移動 | workbench.action.positionPanelLeft |
|
將面板向右移動 | workbench.action.positionPanelRight |
|
將面板移動到底部 | workbench.action.positionPanelBottom |
|
開啟下一個最近使用的編輯器 | workbench.action.openNextRecentlyUsedEditor |
|
開啟上一個最近使用的編輯器 | workbench.action.openPreviousRecentlyUsedEditor |
|
在群組中開啟下一個最近使用的編輯器 | workbench.action.openNextRecentlyUsedEditorInGroup |
|
在群組中開啟上一個最近使用的編輯器 | workbench.action.openPreviousRecentlyUsedEditorInGroup |
|
開啟最近使用編輯器選擇器 | workbench.action.showAllEditorsByMostRecentlyUsed |
|
透過選擇器開啟上一個最近使用的編輯器 | workbench.action.quickOpenPreviousRecentlyUsedEditor |
|
⌃Tab (Windows, Linux Ctrl+Tab) | 透過選擇器在群組中開啟上一個最近使用的編輯器 | workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup |
透過選擇器開啟最少使用的編輯器 | workbench.action.quickOpenLeastRecentlyUsedEditor |
|
⌃⇧Tab (Windows, Linux Ctrl+Shift+Tab) | 透過選擇器在群組中開啟最少使用的編輯器 | workbench.action.quickOpenLeastRecentlyUsedEditorInGroup |
開發人員:重新啟動擴充功能主機 | workbench.action.restartExtensionHost |
工程
TSLint 到 ESLint 遷移
VS Code 主要以 TypeScript 撰寫。除了編譯器之外,我們還使用 linting 來強制執行某些樣式和工程規則。過去,我們一直使用 TSLint 來完成這項任務,但大約一年前,TSLint 的維護人員 宣布棄用,轉而支持 ESLint。
在這個里程碑中,我們已遷移到 ESLint - 其中包括我們的 lint-configuration 和我們的 自訂規則。最後但並非最不重要的一點是,我們也更新了 yo code
擴充功能產生器,以便新的 TypeScript 擴充功能也由 ESLint 檢查。
如果您在自己的專案中使用 TSLint,我們建立了一個 將 TSLint 遷移到 ESLint 指南,以協助您切換到 ESLint。
使用 TypeScript 3.8-beta 建置 VS Code
VS Code 現在使用 TypeScript 3.8 beta 版本建置。
支援在 Shadow DOM 中託管 Monaco Editor
我們修正了圍繞滑鼠處理和動態 CSS 的各種問題,以便 Monaco Editor 現在可以託管在 Shadow DOM API shadow root 內部。
新文件
容器
有新的文章涵蓋使用 Microsoft Docker 擴充功能建立 容器。您會找到用於容器化 Node.js 和 ASP.NET Core 應用程式、推送至 容器登錄,以及將 容器部署 到雲端的教學課程。
值得注意的修正
- 12058:定期儲存 UI 狀態以防止關機時遺失
- 79205:當連線到不區分大小寫平台上的區分大小寫檔案系統時,Explorer 樹狀結構未顯示正確的內容
- 83543:偵錯程式位置僅針對活動工作階段顯示
- 85057:將對話方塊詳細資訊移動到自訂對話方塊中的描述列
- 86445:無法透過熱鍵同時刪除多個監看式偵錯變數
- 88240:建立許多監看式下拉式選單運算式時速度很慢
- 89057:讓唯讀編輯器顯示問題
- 89405:文字檔:不要為唯讀模型報告 dirty 狀態
感謝您
最後但同樣重要的是,非常感謝以下人士協助使 VS Code 變得更好
對我們的 issue tracking 的貢獻
對 vscode
的貢獻
- Alexander Fell (@AlexFell-Velo):新增 position panel left PR #84477
- AlexStrNik (@AlexStrNik):修正 #89493 PR #89653
- Brett Cannon (@brettcannon):合併 pull request #87946 from brettcannon/patch-2 PR #87946
- Bura Chuhadar (@BuraChuhadar)
- Siberian Cat (@cat-kitten):Roblox XML 檔案語法醒目提示支援 PR #87755
- Charles Gagnon (@Charles-Gagnon):不要為涵蓋率檢測任何測試程式碼 PR #86608
- Chayim Refael Friedman (@ChayimFriedman2):工作階段停止後隱藏偵錯主控台 PR #83249
- Daniel Beigi (@dbeigi):已修正 #83983 新增醒目提示 collapsed PR #84955
- Dmitry Gozman (@dgozman):在個別任務中處理偵錯配接器訊息;請參閱 #33822、#79196 PR #81403
- Dima Krasner (@dimkr):將 node-native-keymap 版本提升至 2.1.1,以簡化 arm64 交叉編譯 PR #86659
- David Lechner (@dlech):修正重新啟動偵錯配接器後未提取執行緒的問題 PR #88790
- Daryl Chan (@dvrylc):當沒有活動圖示佈景主題時,隱藏 Markdown 預覽編輯器圖示 PR #88692
- Fabien Launay (@FabienLaunay)
- Gabriel DeBacker (@GabeDeBacker):允許擴充功能安裝和解除安裝命令執行將例外狀況擲回給呼叫者 PR #88714
- Jens Fischer (@Gama11):釐清 QuickPickItem.description 和 detail 的文件 PR #88622
- John Murray (@gjsjohnmurray):#85645 顯示變數提取失敗訊息 PR #85842
- @GustavoASC
- Yunseok (@hannut91):修正錯字 PR #88824
- Harald Rosberg (@hrosb):將 electron 版本提升至 6.1.6,修正了輔助功能應用程式中遺失的視窗標題 PR #86837
- Andrew Liu (@hypercubestart):修正已剖析的 JSDoc 作者標籤 PR #80898
- Yuki Ueda (@Ikuyadeu):將 'declare var' 取代為 'declare const' PR #87709
- Andrii Dieiev (@IllusionMH):針對「要包含/排除的檔案」欄位的輸入歷程記錄進行防抖處理 PR #86785
- Jason (@JasonMFry)::speech_balloon: 修正歡迎頁面上的文法 PR #88801
- Jean Pierre (@jeanp413)
- 合併 pull request #87827 from jeanp413/fix-79857 PR #87827
- 修正無法點擊 enum 設定值中的連結 PR #86463
- 修正當篩選處於活動狀態時,無法建立新的偵錯監看式運算式 PR #88502
- 修正檔案拖放不會開啟 Explorer 窗格 PR #88078
- 修正當在檔案總管中建立新檔案/資料夾和重新命名時,焦點元素不正確 PR #87052
- 修正程式碼片段在字首之前取代的問題 PR #86509
- 修正終端機環境變數在空白工作區中無法解析的問題 PR #83369
- 修正 mightProducePrintableCharacter 數字鍵盤支援 PR #77911
- 新增設定以控制預設情況下是否將焦點放在 Peek 小工具中的行內編輯器 PR #88185
- Andy Edwards (@jedwards1211):fix(extHostProgress):throttle 而不是 debounce PR #86161
- Jon Bockhorst (@jmbockhorst):使終端機連結行為與編輯器一致 PR #83620
- Robert Jin (@jzyrobert)
- Kristian Thy (@kthy):feat:perl5 的區域摺疊 PR #85642
- kevinn (@latel):修正 stateService 中的最小錯字 PR #86744
- Jiaxun Wei (@LeuisKen):fix:將 'allow-forms' 新增至 sandbox 屬性。 PR #87334
- Luis Oliveira (@lmvco):支援 Shadow DOM PR #88536
- Jonathan Carter (@lostintangent):移除 Markdown/Emmet 語言功能的配置限制 PR #87541
- Maher Jendoubi (@MaherJendoubi):Contributing:修正錯字 PR #89256
- Maira Wenzel (@mairaw):修正錯字 PR #88730
- Matias Godoy (@mattogodoy):修正錯字 PR #86957
- Matt Crouch (@mjcrouch):修正來自各種圖示容器位置的遺失樣式 PR #88157
- Marko Novakovic (@mnovakovic):CallStackView 嘗試將活動框架移動到頂部 PR #88074
- Mohammad Rahhal (@mrahhal):修正鏡像游標選取 PR #86986
- Ilya Murav'jov (@muravjov):editor.insertSpaceAfterComment 設定 PR #41747
- Micah Smith (@Olovan):修正 #84145 在切換終端機窗格時的問題 PR #88098
- pan93412 (@pan93412):fix(tokenClassificationExtensionPoint):一些錯字 PR #89704
- Przemek Dziewa (@pdziewa):修正長狀態列項目 PR #87164
- Oliver Larsson (@Playturbo):友善的 pickstring 選項 PR #89180
- Remy Suen (@rcjsuen):為 CompletionItem 的 insertText 新增遺失的文件 PR #87115
- @romainHainaut:修正 #83644 PR #86619
- Sameer Puri (@sameer):在 Linux 上啟用 Shift-Insert 以貼上主要剪貼簿,修正 #36170。 PR #63374
- @sharkykh:還原「重新命名時的目前 git 分支名稱」 PR #86919
- Simon Siefke (@SimonSiefke):fix #87181:本機函式的 typescript 完成項目種類 PR #87182
- @smilegodly:擺脫重複的「清除搜尋」和「找不到設定」 PR #86494
- Konstantin Solomatov (@solomatov)
- @SPGoding:修正擴充功能 package.json 結構描述中的錯誤按鍵 PR #87042
- @sportshead:從 search.contribution.ts 中移除 search.location PR #89585
- @sverg1:customEditor 切換和儲存/預覽快速鍵 PR #86505
- Ye Zhihao (@Vigilans):修正在 FileExplorer 的區塊中 TreeView 的清單服務處理錯誤的問題 PR #87805
- @xearonet:修正 .bat 變數周圍 PR #88986
- Pen Tree (@zyctree):修正 vscode.d.ts 中的錯字 PR #87704
對 vscode-eslint
的貢獻
- Nikhil Verma (@NikhilVerma):清楚說明模式是陣列而非物件,用於設定 PR #853
- Tyler Waters (@tswaters):修正 #805:在 package.json 中支援 eslint PR #877
對 language-server-protocol
的貢獻
- Sebastian Zarnekow (@szarnekow):修正了輕微的格式錯誤 PR #876
- @KamasamaK
對 vscode-languageserver-node
的貢獻
對 debug-adapter-protocol
的貢獻
- Gerald Richter (@richterger):更新 adapters.md PR #89
對 vscode-vsce
的貢獻
- Felix Hao (@felixhao28):支援連結的 npm 模組 PR #411
- 道化師 (@wraith13):修改訊息以符合目前情況 PR #409
- Shaun Tabone (@xontab):npm list 命令的日誌層級變更為 error 以提升相容性 PR #412
對 vscode-js-debug
的貢獻
- Ben Creasy (@jcrben):修正:允許從 launch.json 中省略 "program" PR #203
對 vscode-generator-code
的貢獻
- Jake Witcher (@jakewitcher):修正語言擴充功能範本的 language-configuration.json 中的錯字 PR #189
- Stavros Tsourlidakis (@stsourlidakis):修正 ext-command-js/test 中的 eslint 問題 PR #190
對 vscode-azurecli
的貢獻
對 vscode-emmet-helper
的貢獻
- Diogo Felix (@onlurking):功能:更新 emmet 縮寫 PR #34
對 localization
的貢獻
有超過 800 位雲端 + AI 本地化社群成員使用 Microsoft 本地化社群平台 (MLCP),其中約有 170 位活躍貢獻者參與 Visual Studio Code。我們感謝您的貢獻,無論是提供新的翻譯、為翻譯投票,或是建議流程改進。
以下是貢獻者快照。如需專案詳細資訊,包括貢獻者名稱列表,請造訪專案網站:https://aka.ms/vscodeloc。
- 波士尼亞文 (拉丁文,波士尼亞與赫塞哥維納): Sead Mulahasanović、Adnan Rizvan、Ismar Bašanović。
- 保加利亞文: Andreyka Lechev。
- 捷克文: Michal Černík。
- 丹麥文: Lasse Stilvang。
- 荷蘭文: Philip Denys、Lemuel Gomez、Dennis Hummel、Gideon van de Laar。
- 英文 (英國): Martin Littlecott、Alexander Ogilvie、Krishna Regar、Alonso Calderon、Daniel Imms、Kamalsinh Solanki。
- 芬蘭文: Tuula P。
- 法文: Antoine Griffard、Thierry DEMAN-BARCELÒ、Edouard Choinière、Joel Monniot、Rodolphe NOEL、Lucas A.、Alain、BUFERNE、Xavier Laffargue、Mohamed Sahbi、DJ Dakta。
- 德文: Pascal Wiesendanger、Marvin Heilemann、jan-nitsche、Jakob von der Haar、Michael Richter。
- 希臘文: Valantis Kamayiannis、Θοδωρής Τσιρπάνης。
- 希伯來文: Ariel Bachar。
- 印地文: Kiren Paul、Niraj Kumar、Preeti Madhwal、Jaadu Jinn、Mahtab Alam。
- 匈牙利文: József Cserkó、Kiss Attila Csaba、Krisztián Papp。
- 簡體中文: Yizhi Gu、Tingting Yi、Justin Liu、ick、Charles Dong、Peng Zeng、Tony Xia、斌 項、普魯文、paul cheung、張銳、Zhiqiang Li、Yixing Zheng、AlexiZz Nakido、冉 耀隆、Chow David、Sheng Jiang、yungkei fan、Yao Rui、Joel Yang、鐘越、Chenglong Wei、一斤瓜子、Yiting Zhu、Alexander ZHANG、YanJun Sun、Libing Yang、ZHENGCHENG CHEN、張 任飛、光宇 朴、石岩 詹、舜杰 杨、WJ Wang、Siam Chen。
- 繁體中文: Winnie Lin、船長、Alan Tsai、TingWen Su。
- 印尼文: Eriawan Kusumawardhono、Aldila、Arif Fahmi、Laurensius Dede Suhardiman、Mychael Go、Christian Elbrianno、Septian Adi。
- 義大利文: Alessandro Alpi、Luigi Bruno。
- 日文: Takayuki Fuwa、Seiichi Ariga、Koichi Makino、Yoshihisa Ozaki、貴康 内田、Ishii Shun、Kyohei Uchida、TENMYO Masakazu、Aya Tokura。
- 韓文: Hongju。
- 拉脫維亞文: Andris Vilde。
- 挪威文: Frode Aarebrot、Anders Stensaas、Thomas Ødegård、Thomas Isaksen。
- 波蘭文: Makabeus Orban、Mateusz Redynk、Kacper Łakomski、Piotr Rysak、Wojciech Maj、Oskar Janczak、Szymon Seliga、Franx Bar、Marcin Anonimus。
- 葡萄牙文 (巴西): Marcelo Fernandes、Arthur Lima、Albert Tanure、Loiane Groner、Nylsinho Santos、Alessandro Trovato、Pudda、Matheus Vitti Santos、Rodrigo Crespi、Wellington OStemberg、Roberto Fonseca、Felipe Galante、Rodrigo Tavares、Alessandro Fragnani、Felipe Nascimento、Alexis Lopes。
- 葡萄牙文 (葡萄牙): Francisco Osorio、Luís Chaves、Ricardo Sousa Vieira、João Fernandes。
- 羅馬尼亞文: Tiberiu Frățilă、LaServici、Dan Ichim。
- 俄文: Vadim Svitkin、Николай Соколовский、Дмитрий Кирьянов、Baturin Valery。
- 塞爾維亞文 (西里爾文): Dusan Milojkovic。
- 西班牙文: José María Aguilar、Ricardo Estrada Rdez、JOSE AHIAS LOPEZ PORTILLO、Gustavo Gabriel Gonzalez、Camilo Sasía。
- 瑞典文: Pelle Alstermo。
- 坦米爾文: Rajesh Waran、MUTHU VIJAY、Sankar Raj、Kadhireshan S、saravanan ramesh、Aravindh JANAKIRAMAN、Pandidurai R、Madhu Chakravarthy、Madhu Maha。
- 土耳其文: Mehmet Yönügül、Özgür ERSOY、mehmetcan Gün、Misir Jafarov、Isa Inalcik、Fırat Eşki、Gökberk Nur、Safa Selim。
- 烏克蘭文: Serhii Shulhin、Arthur Murauskas、Oleksandr Krasnokutskyi、Фомін Тарас。
- 越南文: Dat Nguyen、Vương、Van-Tien Hoang、Dao Ngo、ng-hai。