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 編輯器。Monaco 編輯器支援有用的功能,例如多游標和移動/複製行命令。
多根資源管理器中的兩步摺疊
當您使用多根工作區時,“檔案資源管理器”中的摺疊資料夾按鈕現在具有兩步行為。第一次單擊將摺疊每個頂級資料夾內的所有資料夾,第二次單擊將摺疊頂級資料夾。搜尋檢視已經具有此行為。
主題:Monokai
根據作業系統顏色方案自動切換主題
Windows 和 macOS 現在支援淺色和深色配色方案。有一個新設定 window.autoDetectColorScheme
,它指示 VS Code 監聽作業系統顏色方案的變化並相應地切換到匹配的主題。
要自定義顏色方案更改時使用的主題,您可以使用以下設定來設定首選的淺色和深色主題
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 + Click
一次,首先摺疊內部範圍。再次單擊 Shift + Click
(當所有內部範圍都已摺疊時)將摺疊父級。再次單擊 Shift + Click
將全部展開。
當對已摺疊的範圍使用摺疊命令 (⌥⌘[ (Windows、Linux Ctrl+Shift+[)) 時,下一個未摺疊的父範圍將被摺疊。
新換行選項
預設情況下,編輯器透過假設所有字元都具有相同的寬度來計算自動換行符。此假設允許預設演算法快速,但當使用非等寬字型或以字元寬度不同的指令碼書寫文字時,其結果很差。有一個新設定 editor.wrappingStrategy
,可以設定為 advanced
以讓編輯器將自動換行計算委託給瀏覽器。
輔助功能
建議小部件改進
建議小部件現在不再使用 ARIA 警報,並正確指示螢幕閱讀器它已獲得焦點。這應該可以防止螢幕閱讀器意外地妨礙。
檢測到螢幕閱讀器時 editor.accessibilityPageSize 設定為 160
editor.accessibilityPageSize
設定控制編輯器中螢幕閱讀器一次可以讀出的行數。但是,使用大值時會影響效能。我們決定在檢測到螢幕閱讀器時自動將值設定為 160 行(並且由於 NVDA 錯誤,不會更多)。
Linux Orca 可訪問性
我們已開始研究如何使用 Orca 螢幕閱讀器在 Linux 上使 VS Code 可訪問。但是,由於此工作需要 Electron 7,我們預計在下一個穩定版本中會取得更多進展。與此同時,對於 Linux 可訪問性,您可以使用我們的Insider版本並提供反饋。
整合終端
滾動靈敏度
現在可以使用新設定獨立於編輯器配置終端的滾動靈敏度
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
}
作為一個例子,我們為一些 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。此次小更新包含一些重要的 bug 修復,包括修復 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
在穩定版中選擇啟用。
TypeScript 和 JavaScript 的語義高亮
TypeScript 和 JavaScript 的語義高亮支援正在開發中,尚未預設啟用。您可以透過新增以下設定來嘗試
"editor.semanticHighlighting.enabled": true
啟用後,您會看到一些識別符號具有新的顏色和樣式,現在根據其解析型別進行高亮顯示。預設語法 (TextMate) 高亮器將許多標記分類為 variables
,這些標記現在被解析為名稱空間、類、引數等。
在匯入部分可以最好地看到這一點,現在每個匯入的符號都用符號型別著色
您可以使用開發者:檢查編輯器標記和範圍命令來檢查為每個位置計算的語義和語法標記。
新的 JavaScript 偵錯程式
我們一直在開發適用於 Node.js 和 Chrome 的新偵錯程式。它預設安裝在 Insiders 版本中,也可以在 VS Code 穩定版中從 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 的任何 bug,請告訴我們!
對擴充套件的貢獻
Java 偵錯程式支援資料斷點
Java 偵錯程式擴充套件現在支援 VS Code 1.38 中引入的資料斷點。此功能允許您建立當變數值發生變化時觸發的斷點。
您可以在下面看到當 Owner.telephone
字串更改時偵錯程式會中斷
Java 呼叫層次結構檢視
Java 語言支援擴充套件現在支援呼叫層次結構檢視,該檢視顯示從函式或到函式的所有呼叫,並允許您深入檢視呼叫者的呼叫者和呼叫的呼叫。
右鍵單擊符號並選擇速覽 > 速覽呼叫層次結構以檢視呼叫層次結構
遠端開發
遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
1.42 版的主要功能包括
- 遠端 - SSH:改進了對 Windows 伺服器的支援,包括自動作業系統檢測。
- WSL:支援在資源管理器中顯示,用於為 WSL 資源開啟 Windows 資源管理器。
- 開發容器:預構建的容器映像,包括 Git 和 zsh 等依賴項。
- 轉發埠檢視:對映、檢視和重用 SSH 和容器埠。
您可以在遠端開發釋出說明中瞭解新的擴充套件功能和 bug 修復。
擴充套件創作
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+
上面的懸停示例正在渲染所有可用的 codicon。懸停是使用下面的程式碼片段建立的,但為了可讀性,大多數 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
元素。當請求具有多個過載的元素的呼叫層次結構時,“多個”選項很有用。
在終端上公開建立選項
Terminal
物件有一個新的 creationOptions
屬性,擴充套件可以使用它來識別終端是如何建立的。
特定於語言的設定
擴充套件現在可以使用新的配置範圍 language-overridable
貢獻可被語言覆蓋的設定。
示例
"contributes": {
"configuration": {
"title": "sample",
"properties": {
"sample.languageSetting": {
"type": "boolean",
"scope": "language-overridable"
}
}
}
}
Configuration API 得到增強以支援這些設定。您可以透過傳遞必要的 languageId
使用 API 讀取和更新這些設定。
示例
/**
* 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}) {
}
});
有關更多資訊,請參閱 Configuration 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 鉤子,用於訪問已替換的變數
除錯的擴充套件 API 在 DebugConfigurationProvider
上提供了一個鉤子 resolveDebugConfiguration
,可用於在將除錯配置傳遞給除錯介面卡之前對其進行驗證。由於此鉤子在變數替換之前呼叫,因此驗證程式碼可以輕鬆地向除錯配置新增更多變數,並且仍然可以及時替換它們。
這種方法可能難以在 resolveDebugConfiguration
鉤子中使用已解析的變數值,例如用於驗證或實現僅存在於擴充套件中(而不存在於除錯介面卡中,其中已提供已替換值)的功能。有關示例,請參閱問題 #85206。一些擴充套件已開始自行替換變數(這通常不完整,因為它不涵蓋所有情況)。
從使用者的角度來看,這令人困惑。在除錯配置中,一些屬性變數可以使用(因為它們在替換髮生後在除錯介面卡中處理),而另一些屬性變數不能(因為它們在擴充套件中處理,而替換尚未發生)。問題 #87450 是後一個問題的一個很好的例子。
在此里程碑中,我們透過向 DebugConfigurationProvider
新增第二個鉤子 resolveDebugConfigurationWithSubstitutedVariables
來解決此問題,該鉤子接收具有所有變數都已替換的除錯配置。
隨著此新 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
}
}
由於除錯介面卡協議(可作為節點模組vscode-debugprotocol獲得)是vscode.DebugAdapter
介面的相容超集,因此如果您需要完整的協議並希望完全自行實現除錯介面卡,則可以匯入該模組。
一個更簡單的替代方法是(繼續)使用我們的除錯介面卡預設實現,該實現可作為節點模組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());
}
});
有關詳細資訊,請參閱模擬除錯示例。
注意:在此版本中,我們已完成用於建立除錯介面卡的擴充套件 API。因此,我們宣佈將在 3 月份的版本中刪除對debuggers
貢獻點的兩個已棄用屬性的支援
adapterExecutableCommand
- 請改用擴充套件 APIvscode.DebugAdapterDescriptorFactory
和vscode.DebugAdapterExecutable
。模擬除錯示例展示瞭如何使用該 API。enableBreakpointsFor
- 請改用breakpoints
貢獻點。轉換需要在package.json
中完成。
如果當前的(已棄用)JSON 如下所示
"contributes": {
"debuggers": [{
"type": "csharp",
// ...
"enableBreakpointsFor": [ "csharp", "razor" ]
// ...
}]
轉換將是
"contributes": {
"breakpoints": [
{ "language": "csharp" },
{ "language": "razor" }
],
"debuggers": [{
"type": "csharp",
// ...
}]
我們建議受影響的擴充套件在 2 月份及時將其實現適應新的 API,以便我們有足夠的時間在 3 月份之前修復問題。
建議的擴充套件 API
每個里程碑都會帶來新的提議 API,擴充套件作者可以進行嘗試。一如既往,我們渴望您的反饋。以下是試用提議 API 的方法:
- 您必須使用 Insiders 版本,因為提議的 API 經常更改。
- 您的擴充套件的
package.json
檔案中必須包含以下行:"enableProposedApi": true
。 - 將最新版本的 vscode.proposed.d.ts 檔案複製到您專案的源位置。
請注意,您不能釋出使用提議 API 的擴充套件。下一個版本中可能會有重大更改,我們絕不希望破壞現有擴充套件。
新增工作區編輯元資料
現在 VS Code 中支援的重構預覽附帶了一個新的可選 API 提案。它允許您對工作區編輯的更改進行分類。例如,您可以定義更改是否需要使用者確認或新增諸如“字串和註釋中的重新命名”之類的描述。該提案可以在問題 #77728 中跟蹤,其當前設計圍繞WorkspaceEditMetadata 介面。
語義高亮
如果您有興趣為您的語言新增語義高亮,語義高亮概述提供了概念和新 API 的摘要。
身份驗證提供程式
某些擴充套件需要對其他服務進行身份驗證。問題 #88309 中的提案將使擴充套件能夠註冊可由其他擴充套件訪問的身份驗證提供程式,從而提供執行身份驗證的通用機制。
時間線提供程式
擴充套件很快將能夠將自己的源貢獻到新的時間線檢視中。有興趣新增您自己的時間線源嗎?請檢視問題 #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 中顯示文件。
問題 #86788 跟蹤了提案的狀態。
自定義編輯器的備份和熱退出鉤子
在此迭代中,我們繼續迭代擬議的自定義編輯器 API。本月我們主要調查瞭如何為自定義編輯器啟用熱退出。問題 #88719 涵蓋了我們為支援熱退出遇到的一些挑戰以及我們考慮的一些方法。
這項調查的結果是 WebviewCustomEditorEditingDelegate
介面上有一個新的可選 backup
方法。此方法在資源更改一秒左右後由 VS Code 呼叫。在 backup
方法內部,擴充套件應將資源持久化到其當前狀態。通常,這意味著將資源寫入工作區儲存資料夾。然後,當編輯器重新載入時,它應在從工作區本身載入資源之前檢查是否存在任何持久化備份。
我們將在下一次迭代中繼續迭代自定義編輯器 API。
複雜補全標籤
我們正在改進 CompletionItem
API,以適應需要提供限定名、匯入路徑、返回型別和其他資訊的複雜補全項。這些資訊必須提前提供,而不是稍後解析。提供的資訊將直接顯示在建議小部件中。我們將在下一次迭代中迭代當前提案。同時,我們正在考慮向建議小部件新增狀態列,以解決一些 UI 和可發現性挑戰。我們期待您對 API 的反饋。
主題:Nord,字型:Input Mono
向診斷錯誤新增連結
診斷錯誤現在可以與其錯誤程式碼關聯一個連結。提供連結後,它將顯示在“問題”面板、行內錯誤檢視和診斷錯誤懸停中。由於我們將在下一次迭代中繼續開發此功能,您可以在問題 #11847 中提供反饋。
語言伺服器協議
語言伺服器協議的 3.15 版現已推出。我們還發布了相應的 npm 模組,用於 VS Code LSP 客戶端和用 Node.js 編寫的 LSP 伺服器。最新版本的庫包含語義標記的提案規範和實現。
LSP 網站現在託管著 語言伺服器索引格式規範 的初步版本以及相應的 LSIF 概述。
瀏覽器支援
將檔案拖放到編輯器中
在瀏覽器中使用 VS Code 時,您現在可以將本地檔案拖放到編輯器區域,以將它們作為髒檔案(未儲存)開啟,幷包含檔案內容。
新命令
鍵 | 命令 | 命令 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 配置和我們的自定義規則。最後但並非最不重要的是,我們還更新了yo code
擴充套件生成器,以便新的 TypeScript 擴充套件也由 ESLint 檢查。
如果您在自己的專案中使用 TSLint,我們建立了將 TSLint 遷移到 ESLint指南,以幫助您切換到 ESLint。
使用 TypeScript 3.8-beta 構建 VS Code
VS Code 現在使用 TypeScript 3.8 beta 版本構建。
支援在 Shadow DOM 中託管 Monaco 編輯器
我們修復了滑鼠處理和動態 CSS 方面的各種問題,因此 Monaco 編輯器現在可以託管在 Shadow DOM API shadow root 中。
新文件
容器
有新的文章介紹瞭如何使用 Microsoft Docker 擴充套件建立容器。您將找到有關容器化 Node.js 和 ASP.NET Core 應用程式、推送到容器登錄檔以及將容器部署到雲的教程。
值得注意的修復
- 12058:定期儲存 UI 狀態以防止關閉時丟失
- 79205:在不區分大小寫的平臺上連線到區分大小寫的檔案系統時,資源管理器樹不顯示正確內容
- 83543:除錯程式位置僅顯示在活動會話中
- 85057:在自定義對話方塊中將對話方塊詳細資訊移動到描述行
- 86445:無法透過熱鍵同時刪除多個 Watch 除錯變數
- 88240:建立許多 Watch 下拉表示式速度慢
- 89057:讓只讀編輯器顯示問題
- 89405:文字檔案:不報告只讀模型的髒狀態
感謝
最後但同樣重要的是,衷心感謝!以下幫助使 VS Code 變得更好的各位:
對我們問題跟蹤的貢獻
對 vscode
的貢獻
- Alexander Fell (@AlexFell-Velo):新增位置面板左側 PR #84477
- AlexStrNik (@AlexStrNik):修復 #89493 PR #89653
- Brett Cannon (@brettcannon):合併 pull request #87946 來自 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 新增高亮摺疊 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 author 標籤 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 來自 jeanp413/fix-79857 PR #87827
- 修復列舉設定值中的連結無法點選 PR #86463
- 修復在篩選活動時無法建立新的除錯監視表示式 PR #88502
- 修復檔案拖放不開啟資源管理器窗格 PR #88078
- 修復在檔案資源管理器中建立新檔案/資料夾和重新命名時焦點元素不正確 PR #87052
- 修復字首前後的程式碼片段替換 PR #86509
- 修復終端環境變數在空工作區中無法解析 PR #83369
- 修復 mightProducePrintableCharacter 數字鍵盤支援 PR #77911
- 新增設定以控制是否預設將焦點放在速覽小部件的行內編輯器中 PR #88185
- Andy Edwards (@jedwards1211):fix(extHostProgress):節流而不是去抖動 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):修復:向沙盒屬性新增 'allow-forms'。 PR #87334
- Luis Oliveira (@lmvco):支援 Shadow DOM PR #88536
- Jonathan Carter (@lostintangent):刪除 Markdown/Emmet 語言功能的方案限制 PR #87541
- Maher Jendoubi (@MaherJendoubi):貢獻:修復拼寫錯誤 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 setting 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):啟用 Shift-Insert 在 Linux 上貼上主剪貼簿,修復 #36170。 PR #63374
- @sharkykh:恢復“重新命名時當前 Git 分支名稱” PR #86919
- Simon Siefke (@SimonSiefke):修復 #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 命令的日誌級別已更改為錯誤以提高相容性 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
的貢獻
- Matthew Burleigh (@mburleigh): 支援多行命令 PR #61
對 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。