2019 年 4 月 (版本 1.34)
下載:Windows: x64 | Mac: Intel | Linux 64-bit: deb rpm tarball snap | 32-bit: deb rpm tarball
歡迎使用 Visual Studio Code 2019 年 4 月發行版本。在四月份,我們忙於 **Remote Development** 擴充功能的預覽版發行。這些擴充功能讓您透過 SSH 在遠端機器或 VM 上、在 Windows Subsystem for Linux (WSL) 中,或在 Docker 容器內使用 VS Code。您可以閱讀 Remote Development with Visual Studio Code 部落格文章以瞭解更多資訊。
在此版本中仍然有數個更新,我們希望您會喜歡,以及許多社群貢獻。
如果您想在線上閱讀這些發行說明,請前往 code.visualstudio.com 上的 更新。
編輯器
穩定的 CodeLens
VS Code 現在樂觀地快取 CodeLens 位置,並在編輯器切換後立即還原它們。這修正了在編輯器之間切換時,CodeLens 行會稍微偏移的問題。
語言
降低具有供應商前綴的 CSS 屬性值的排序
以破折號 '-'
為前綴的 CSS 屬性值 (例如 -moz-grid
或 -ms-grid
),現在在自動完成中會出現在 grid
之後。
偵錯
debug.showSubSessionsInToolBar
我們引入了設定 `debug.showSubSessionsInToolBar`,它控制是否在偵錯工具列中顯示偵錯子工作階段。當此設定為 false 時,子工作階段上的停止命令也會停止父工作階段。此設定預設為 false。
工作
終止所有工作
**工作:終止工作** 命令有一個新選項,可以在有多個工作正在執行時終止所有工作。如果這是您經常執行的動作,您可以為具有 `terminateAll` 引數的命令建立鍵盤快速鍵。
{
"key": "ctrl+k t",
"command": "workbench.action.tasks.terminate",
"args": "terminateAll"
}
自動顯示 [問題] 面板
新的 `revealProblems` 工作屬性允許您自動顯示 [問題] 面板。屬性值為 `always`、`never` 和 `onProblem`。
{
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "watch",
"problemMatcher": "$tsc-watch",
"isBackground": true,
"presentation": {
"reveal": "always",
"revealProblems": "onProblem"
}
}
]
}
擴充功能貢獻
預覽:Remote Development
❗ **注意:** **Remote Development 擴充功能** 需要 **Visual Studio Code Insiders**。
**Visual Studio Code Remote Development** 允許您使用容器、遠端機器或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。
Remote Development 擴充功能套件 中的擴充功能在遠端工作區的上下文中執行,而 VS Code 的感覺就像在本地執行時一樣。
Vetur
Vetur 擴充功能現在為 Vue 範本插值區域內的 JavaScript 運算式提供語意診斷、hover 資訊、跳到定義和尋找參考。
您可以在 Vetur 文件 中閱讀有關此功能的更多資訊。
其他改進包括減少記憶體使用量和匯入路徑完成。您可以在 Vetur 變更記錄 中瞭解有關它們的更多資訊。
擴充功能撰寫
多擴充功能偵錯
在此里程碑中,我們新增了對一次偵錯多個擴充功能的支援。如果您正在開發一組緊密耦合或相互依存的擴充功能,這會很有用。
先前此功能僅透過 VS Code 的命令列介面公開,現在可以多次指定引數 `--extensionDevelopmentPath`。通常 `--extensionDevelopmentPath` 用於擴充功能的啟動組態中。在開發多個擴充功能時,我們建議將個別擴充功能專案合併到多資料夾工作區中,並建立新的啟動組態 (儲存在工作區 `.code-workspace` 檔案中),該組態針對個別擴充功能使用多個 `--extensionDevelopmentPath` 引數。
以下是一個範例工作區 `.code-workspace` 檔案,其中包含兩個擴充功能 `hello1` 和 `hello2`,以及適用於這兩個擴充功能的單一啟動組態
{
"folders": [{ "path": "hello1" }, { "path": "hello2" }],
"launch": {
"configurations": [
{
"type": "extensionHost",
"request": "launch",
"name": "Launch Two Extensions",
"args": [
"--extensionDevelopmentPath=${workspaceFolder:hello1}",
"--extensionDevelopmentPath=${workspaceFolder:hello2}"
],
"outFiles": [
"${workspaceFolder:hello1}/out/**/*.js",
"${workspaceFolder:hello2}/out/**/*.js"
]
}
]
}
}
請注意,在此版本中,無法建立 `preLaunchTask` 來建置這兩個擴充功能,方法是合併個別擴充功能專案的 `preLaunchTask`。
通知中的命令連結
一直以來都可以透過語法 `[連結名稱](http://連結)` 在通知訊息中包含連結,但這僅適用於在瀏覽器中開啟的連結。現在您也可以使用語法 `[連結名稱](command:<命令 ID>)` 從連結叫用命令。當使用者按一下連結時,將觸發具有所提供識別碼的命令。
通知中的連結允許標題
您現在可以將標題新增至通知中的連結,當使用者將滑鼠停留在連結上方時,將會顯示該標題。語法為 `[連結名稱](連結 "<標題>")`。
建議的擴充功能 API
每個里程碑都隨附新的建議 API,而擴充功能作者可以試用它們。一如既往,我們渴望收到您的意見反應。以下是您試用建議 API 必須執行的動作
- 您必須使用 Insiders 版本,因為建議 API 經常變更。
- 您的擴充功能的 `package.json` 檔案中必須有這一行:`"enableProposedApi": true`。
- 將最新版本的 vscode.proposed.d.ts 檔案複製到您的專案中。
請注意,您無法發行使用建議 API 的擴充功能。我們可能會在下一個版本中進行重大變更,而且我們絕不希望破壞現有的擴充功能。
vscode.workspace.workspaceFile
有一個新的工作區屬性,會傳回工作區檔案的位置。例如:`file:///Users/name/Development/myProject.code-workspace` 或 `untitled:1555503116870`,適用於未命名且尚未儲存的工作區。
根據開啟的工作區,值將會是
- 當未開啟工作區或單一資料夾時,為 `undefined`。
- 工作區檔案的路徑,以 `Uri` 表示。
如果工作區未命名,則傳回的 URI 將使用 `untitled:` 結構描述。
工作區檔案位置的其中一個用途是呼叫 `vscode.openFolder` 命令,以便在工作區關閉後再次開啟它
vscode.commands.executeCommand('vscode.openFolder', uriOfWorkspace);
**注意:** 不建議使用 `workspace.workspaceFile` 位置將組態資料直接寫入檔案。您可以使用 `workspace.getConfiguration().update()`,這在開啟單一資料夾以及未命名或已儲存的工作區時都適用。
機器特定的設定
如果您有允許使用者自訂可執行檔路徑的設定,且如果這些路徑需要限定於它們執行的機器,您現在可以將這類設定分類為 `machine` 範圍。擴充功能作者在貢獻給 `configuration` 擴充功能點時,會設定 `scope` 屬性。機器特定的設定只能針對使用者設定進行設定。
"configuration": {
"title": "Git",
"properties": {
"git.path": {
"type": [
"string",
"null"
],
"markdownDescription": "Path and filename of the git executable.",
"default": null,
"scope": "machine"
}
}
}
工程
針對本機檔案重新撰寫的檔案系統提供者
擴充功能一直能夠為自訂資源提供其自己的檔案系統實作 (在此處閱讀更多資訊)。但是,VS Code 針對本機檔案的實作未使用相同的擴充功能 API 實作。這導致在處理本機檔案資源與來自擴充功能的資源時,產生細微差異。在過去的兩個里程碑中,我們 重新撰寫了我們的本機檔案系統提供者,以使用擴充功能 API 來確保一致性。
新文件
Python Azure Functions
有一個新的 將 Python 部署到 Azure Functions 教學課程,說明如何建立和部署 Python 無伺服器 Azure Functions。
雜項
Language Server Protocol
Language Server Protocol 已提議支援下列新功能
- 選取範圍:計算位置陣列的選取範圍。從用戶端傳送到伺服器。
- 呼叫階層:計算給定符號的呼叫階層。從用戶端傳送到伺服器。
- 進度:從伺服器啟動進度報告。從伺服器傳送到用戶端。
新功能可在 `vscode-languageclient` 和 `vscode-languageserver` npm 模組的下一個版本中使用。
值得注意的修正
- 48259: 檔案總管遵循 FileSystemProvider 的垃圾桶功能
- 68276: 呼叫堆疊「已在中斷點暫停」UI 對於長執行緒名稱不可見
- 69603: 終端機視窗在 Mac OS 中當機
- 72110: 偵錯主控台不必要地轉譯換行
- 71737: 偵錯視窗中的捲動行為異常
- 71588: 在檔案總管中顯示檔案時發生錯誤
- 70492: 「執行中的擴充功能」上的「回報問題」按鈕導致數十個重複的問題
感謝您
最後但同樣重要的是,非常感謝以下人士協助讓 VS Code 變得更好
對我們的問題追蹤的貢獻。如果您想協助我們管理傳入的問題,請參閱我們的 社群問題追蹤 頁面。
- John Murray (@gjsjohnmurray)
- Prabhanjan S Koushik (@skprabhanjan)
- Alexander (@usernamehw)
- Muhammed Emin TİFTİKÇİ (@jaqra)
- Carl Morris (@msftrncs)
對 vscode
的貢獻
- @alpalla: 修正 #27041 PR #72015
- @BaluErtl: 大綱抽屜預設訊息的措辭不正確 PR #73214
- @cmchumak: 改善在未包含工作區的情況下執行工作時的訊息 PR #71476
- Connor Shea (@connorshea): 在格式器下拉式清單中顯示 extensionId 作為描述 PR #71910
- Alexandr Fadeev (@fadeevab): Makefile 測試案例,關於配方中 "@,-,+" 色彩化的錯誤修正 PR #72265
- Nikita Shilnikov (@flash-gordon): 修正當地語系化金鑰中的錯字 PR #72718
- Hung-Wei Hung (@hwhung0111): 修正 code-cli.bat 中的錯字 PR #73091
- Ian Sanders (@iansan5653): 在偵錯主控台中新增對 8 位元和 24 位元 ANSI 逸出色彩代碼的支援 PR #70935
- Muhammed Emin TİFTİKÇİ (@jaqra): 新增名為「轉換為標題大小寫」的標題大小寫轉換命令。 PR #70990
- Jimi (Dimitris) Charalampidis (@JimiC): [佈景主題] 修正重新載入時檔案總管箭號通知 PR #71855
- Jon Bockhorst (@jmbockhorst)
- Johannes Wikman (@jwikman): FindInFiles 已轉換為命令並接受引數 PR #71626
- Jiaxun Wei (@LeuisKen): 修正 #72187 PR #72194
- Luís Ferreira (@ljmf00): theme-monokai:修正索引標籤縮排 PR #72269
- paul cheung (@paul-cheung): 修正錯字 PR #72334
- Evan Bovie (@phaseOne): 將 `vscode:` URI 前綴新增至 links.ts 中的 knownSchemes PR #71416
- Raman (@ramank775): 修正「註解方塊問題 #71703」 PR #71880
- Samuel Bronson (@SamB): json-language-features/CONTRIBUTING.md 修正 PR #73273
- @sebastianwitthus: 44146 自動顯示問題面板 PR #71387
- Simon Siefke (@SimonSiefke): 修正錯字 PR #71564
- Prabhanjan S Koushik (@skprabhanjan): fix-71570 還原已刪除檔案的 Markdown 預覽時發生錯誤 PR #71762
- Tony Xia (@tony-xia)
- Alexander (@usernamehw): 新增 CLI 旗標,以便能夠停用 Web 檢視中的平滑捲動 PR #65422
- Vitaliy Mazurenko (@vitaliymaz)
- Waleed Ashraf (@WaleedAshraf): 忽略 LINE_COLON_PATTERN 中的尾隨空白字元 PR #71985
- William Whittle (@whittlec): 新增 'qsh' 作為有效的 shellscript firstline PR #73231
- Keyi Xie (@xiekeyi98): 修正 build/ 中的拼字錯誤 PR #71977
- XTY (@xtydev): 解決 WSL 啟動指令碼中的迴歸 PR #72779
對 vscode-css-languageservice
的貢獻
- Tony Xia (@tony-xia): 修正了一個小錯誤 PR #151
對 vscode-html-languageservice
的貢獻
- Liam Newman (@bitwiseman): 將 js-beautify 更新至 1.9.1 PR #58
- Christian Oliff (@coliff): 修正屬性錯字 PR #60
對 node-jsonc-parser
的貢獻
- Tony Xia (@tony-xia): JavaScipt -> JavaScript PR #18
對 language-server-protocol
的貢獻
- Danny Tuppeny (@DanTup): 新增用戶端無法套用編輯的選用原因 PR #637
- Ben Mewburn (@bmewburn): 修正 lsif textDocument/definition 範例中的 id PR #725
對 vscode-languageserver-node
的貢獻
- Igor Matuszewski (@Xanewok): 新增建議的視窗/進度擴充功能 PR #261
- Aleksey Kladov (@matklad): 調整 selectionRange API PR #474
- Ben Mewburn (@bmewburn): onImplementation 和 onTypeDefinition 可以傳回 DefinitionLink[] PR #479
- Remy Suen (@rcjsuen): 修正了一個小錯誤 PR #482
對 vscode-eslint
的貢獻
- Mike Martin (@mcmar): 釐清 `changeProcessCWD` 文件 PR #657
- Ilias Tsangaris (@ilias-t): PR #661
- Charles Stover (@CharlesStover): eslint.codeAction.disableRuleComment 的自動完成應該插入 separateLine 而不是 newLine PR #674
對 vscode-lsif-extension
的貢獻
- Chris Wendt (@chrismwendt): 修正最上層檔案的檔案系統查閱 PR #9
對 vscode-textmate
的貢獻
對 vscode-recipes
的貢獻
- AJ Alves (@zerokol): 偵錯 rspec 檔案中的一個特定案例 PR #207
對 vscode-vsce
的貢獻
對在地化的貢獻
有超過 800 位 Cloud + AI 在地化 社群成員使用 Microsoft 在地化社群平台 (MLCP),其中約有 100 位活躍貢獻者參與 Visual Studio Code。
我們感謝您的貢獻,無論是提供新的翻譯、對翻譯進行投票,還是建議流程改進。
以下是 貢獻者 的快照。如需專案的詳細資訊,包括貢獻者名稱清單,請造訪專案網站:https://aka.ms/vscodeloc。
- **波士尼亞文:** Ismar Bašanović。
- **捷克文:** Daniel Padrta、David Jareš、Jan Hajek、Jiří Hofman。
- **丹麥文:** Allan Kimmer Jensen、Thomas Larsen。
- **荷蘭文:** Maxim Van Damme、Sven Klaasen。
- **英文 (英國):** Martin Littlecott、Tobias Collier、William Wood、Giorgi Jambazishvili。
- **法文:** Antoine Griffard、Thierry DEMAN-BARCELÒ、Mohamed Sahbi、Steven Dugois、Michael VAUDIN。
- **德文:** Christof Opresnik。
- **印地文:** Abhirav Kushwaha、Pramit Das。
- **簡體中文:** paul cheung、斌 项、Fan Su、Justin Liu、Horie Yuan、王文杰、赵畅畅、anson zhang、Wang Debang、Pluwen、Yiting Zhu、Joel Yang、Michael Zhang、擎 钟、涛 徐、少民 谈、伟 全、panda small、Array Zhang、LI ZHAO。
- **繁體中文:** 謝政廷、煾 雪。
- **匈牙利文:** Levente Hallai Seiler。
- **印尼文:** Laurensius Dede Suhardiman。
- **義大利文:** Alessandro Alpi、Luigi Bruno、Emanuele Meazzo、Marco Dal Pino。
- **日文:** EbXpJ6bp -、nh、Kyohei Uchida、Yoshihisa Ozaki、Seiji Momoto、Hasefumi、迪人 熊本、Koichi Makino、Kyohei Moriyama、美穂 山本、Aya Tokura。
- **韓文:** 형섭 이、Youngjae Kim、siin lee、Keunyop Lee。
- **拉脫維亞文:** Kaspars Bergs。
- **立陶宛文:** Augustas Grikšas。
- **波蘭文:** Wojciech Maj、Marek Biedrzycki、Igor 05、Marcin Weksznejder、Szymon Seliga、Paweł Modrzejewski、Michał Stojke、Artur Zdanowski。
- **葡萄牙文 (巴西):** Alessandro Trovato、Judson Santiago、Roberto Fonseca、Marcelo Fernandes、Lucas Miranda、Ray Carneiro、Loiane Groner、Daniel Luna、Lucas Santos、Saymon Damásio。
- **葡萄牙文 (葡萄牙):** Ana Rebelo、Pedro Teixeira、João Carvalho、Tiago Antunes。
- **羅馬尼亞文:** Alexandru Staicu。
- **俄文:** Andrey Veselov、Дмитрий Кирьянов、nata kazakova、Валерий Батурин。
- **西班牙文:** Andy Gonzalez、Carlos Mendible、José María Aguilar、Alvaro Enrique Ruano。
- **坦米爾文:** Boopesh Kumar、Karunakaran Samayan、Merbin J Anselm。
- **土耳其文:** mehmetcan gun、Sinan Açar、S. Ferit Arslan。
- **烏克蘭文:** Sviatoslav Ivaskiv、George Molchanyuk。
- **越南文:** Khôi Phạm、Spepirus Shouru、Việt Anh Nguyễn。