Visual Studio Code(简称VS Code)是由微软开发的一款轻量级但功能强大的源码编辑器,它支持Windows、macOS和Linux操作系统。作为一个现代的代码编辑器,VS Code提供了代码高亮、智能代码补全、代码片段、内联代码提示和调试等功能,极大地提高了编程效率。此外,VS Code的用户界面简洁明了,支持多种皮肤和图标主题,满足不同用户的个性化需求。
VS Code不仅适用于Web开发,还支持多种编程语言,如Python、Java、C++和JavaScript等。它内置了Git版本控制,开发者可以直接在编辑器中管理Git仓库,执行提交、分支、合并等操作。VS Code也集成了大量的插件和扩展,丰富了开发工具的生态系统,使得开发者可以根据需要安装特定功能的扩展,从而拓展和优化自己的开发环境。
VS Code是免费且开源的,具有一个活跃的社区,不断地有新的插件和工具被开发出来。它的代码自动完成、导航和自定义配置等进阶特性也是开发者所青睐的。为各种规模的项目提供支持,无论是简单的脚本还是大型的企业项目,Visual Studio Code都是开发人员高效进行代码编写和项目管理的得力助手。
认识一下 IntelliSense。
使用 IntelliSense 超越语法突出显示和自动完成功能,它提供基于变量类型、函数定义和导入模块的智能完成功能。
打印语句调试已成为过去。
直接从编辑器调试代码。启动或附加到正在运行的应用程序,并使用断点、调用堆栈和交互式控制台进行调试。
内置 Git 命令。
与 Git 和其他 SCM 提供商合作从未如此简单。直接从编辑器查看差异、暂存文件并进行提交。从任何托管的 SCM 服务进行推送和拉取。
可扩展和可定制。
想要更多功能吗?安装扩展以添加新语言、主题、调试器并连接到其他服务。扩展在单独的进程中运行,确保它们不会减慢您的编辑器的速度。了解有关扩展的更多信息。
自信轻松地部署
借助 Microsoft Azure,您可以部署和托管 React、Angular、Vue、Node、Python(以及更多!)站点,存储和查询基于关系和文档的数据,并通过无服务器计算进行扩展,所有这些都可以在 VS Code 中轻松完成。
- 编辑器中的语音听写 - 使用您的声音直接在编辑器中听写。
- 多光标内联建议 - 查看并接受多个光标的内联建议。
- Copilot 支持的重命名建议 - 从 Copilot 获取符号的重命名建议。
- 并排预览重构 - 使用多重差异编辑器预览跨文件的重构。
- 更智能的 Python 导入 - 改进了添加缺失的 Python 导入。
- 编辑器中的粘性滚动 - 编辑器中默认启用粘性滚动。
- 语音多语言支持 - 语音识别支持多种语言。
- 开发容器的 Copilot 建议 - 获取开发容器配置的模板和功能建议。
无障碍
在编辑器中使用听写
如果您已安装 VS Code 语音扩展,您现在可以使用语音直接在编辑器中听写。
我们添加了用于启动和停止编辑器听写的新命令:语音:在编辑器中开始听写 (Ctrl+Alt+V) 和语音:在编辑器中停止听写 (Escape)。
您可以按住启动命令的键绑定 (Ctrl+Alt+V) 以启用对讲机模式,在该模式下,一旦释放按键,语音识别就会停止。
注意:听写甚至可以在其他使用丰富编辑器的地方使用,例如 SCM 提交输入框和审查拉取请求时的评论输入字段。
支持多种语言的语音识别
当您使用 VS Code 语音扩展时,您现在可以使用 accessibility.voice.speechLanguage
设置从 26 种支持的语言中选择一种。
语音扩展的每种语言都有其自己的扩展。当您第一次启动语音识别时,您将看到您选择的每种语言的扩展安装。
无障碍信号
辅助功能信号包括声音(以前称为音频提示)和公告(以前称为警报)。
命令“帮助:列出信号声音”和“帮助:列出信号公告”允许用户查看可用信号并对其进行配置。迁移到此新配置会自动发生。
前:
"audioCues.clear": "on | auto | off"
"accessibility.alert.clear": true | false
后:
"accessibility.signals.clear": {
"sound": "auto | on | off",
"announcement" (optional): "auto | off"
}
工作台
发行说明中的交互设置
为了让您更轻松地开始使用新功能,您现在可以直接从发行说明中启用或查看设置。当您从 VS Code 中查看发行说明(“显示发行说明”命令)时,请注意某些设置带有齿轮图标。选择设置或齿轮图标以立即与设置交互。
语言模型访问的透明度和控制
在这次迭代中,我们引入了一个建议的 API,该 API 使扩展能够使用 GitHub Copilot Chat 的语言模型。为了提供对模型访问的最大透明度和控制,我们添加了以下功能。
像管理身份验证访问一样管理语言模型访问
我们发现管理对语言模型的访问与在 VS Code 中管理对 GitHub 帐户或 Microsoft 帐户(或任何利用 AuthenticationProvider
模型)的访问非常相似。由于这些相似之处,我们也利用 VS Code 的身份验证堆栈来访问语言模型。
当一个扩展想要访问另一个扩展的语言模型时,他们会看到一个一次性的访问提示,该提示将被保留:
授予访问权限后,您将能够在管理帐户访问权限的同一位置(帐户菜单中)管理该访问权限:
“管理 Trusted Extensions”可让您快速选择可以管理访问的位置(如果您选择):
初步工作完成后,我们将继续完善体验,使其尽可能流畅和清晰。
跟踪扩展的语言模型使用情况
您可以在扩展编辑器和运行时扩展编辑器中跟踪扩展的语言模型使用情况。下图显示了 Copilot Chat 示例扩展向 GitHub Copilot Chat 语言模型发出的请求数量。
编辑
编辑器粘性滚动
在本次迭代中,我们默认在编辑器中启用粘性滚动。您可以使用设置 editor.stickyScroll.enabled
更改此设置。
我们还将编辑器粘性小部件中可以显示的最大行数从 10 增加到 20。您可以使用设置 editor.stickyScroll.maxLineCount
配置最大行数。
多个游标的内联补全
这次迭代我们添加了对多光标内联完成的支持。现在,可以在主要和辅助光标位置预览并应用内联补全。
在多重差异编辑器中重构预览
通过重构预览,您可以查看代码重构将应用的更改。重构预览更改现在显示在多重差异编辑器中,这有助于一目了然地查看所有更改并将它们与以前的版本进行比较。
终端
跟踪的命令持续时间
现在,当启用 shell 集成时,会跟踪终端持续时间并在命令悬停中显示详细信息:
用于放大、缩小和重置的新命令
有用于放大、缩小和重置终端字体大小的新命令。默认情况下,它们是未绑定的,但您可以将它们绑定到您首选的键绑定。
- 终端:增加字体大小 (
workbench.action.terminal.fontZoomIn
) - 终端:减小字体大小 (
workbench.action.terminal.fontZoomOut
) - 终端:重置字体大小 (
workbench.action.terminal.fontZoomReset
)
源代码控制
在窗口标题中包含存储库或分支名称
用户可以使用 window.title
设置自定义窗口标题。在这次迭代中,我们添加了两个可与此设置一起使用的新变量: ${activeRepositoryName}
和 ${activeRepositoryBranchName}
。这些变量分别替换为活动存储库和活动分支的名称。
提交输入验证改进
在这次迭代中,我们探索了使用语言诊断来为创作提交消息提供更好的输入验证。使用语言诊断使我们能够显示可调用的代码操作来解决输入验证警告。我们添加了代码操作来删除空格字符、基于 git.inputValidationSubjectLength
和 git.inputValidationLength
设置的硬换行,并且我们希望将来添加更多代码操作。
要启用它,请切换 git.inputValidation
设置。在默认启用此功能之前,我们需要解决一些问题,但与此同时,请随时启用它并让我们知道您的反馈。
传入/传出更改设置管理
我们继续完善源代码管理视图的传入/传出部分。在这次迭代中,我们向“传入/传出”分隔符添加了一个设置操作,允许用户更轻松地切换 scm.showIncomingChanges
、 scm.showOutgoingChanges
和 scm.showChangesSummary
设置。这些操作也可以在“源代码管理”视图标题栏的 ...
菜单中的“传入和传出”菜单中找到。
关闭所有未修改的编辑器命令
为了帮助编辑器管理,我们在命令选项板中添加了“关闭所有未修改的编辑器”命令,该命令将关闭所有具有未修改文件的编辑器。该命令不会关闭具有未保存更改的编辑器。
笔记本电脑
笔记本的缩进设置
我们现在通过 notebook.editorOptionsCustomizations
设置支持笔记本特定的缩进设置。此设置允许用户通过 editor.tabSize
、 editor.indentSize
和 editor.insertSpaces
设置为笔记本设置特定的缩进样式。
用户还会注意到名为“笔记本缩进”的状态栏条目,其中显示笔记本编辑器的当前缩进设置。该条目有一个快速选择菜单,可以管理缩进设置,而无需打开设置编辑器。这与编辑器中也提供了相同的快速选择菜单。
调试
支持新的断点模式
VS Code 支持调试适配器协议 (DAP) 的新功能,允许您设置不同的断点“模式”。此功能通常由本机代码的调试器使用,例如,设置硬件与软件断点。可以使用断点上下文菜单中的“编辑模式”操作来更改断点的模式。
远程开发
远程开发扩展允许您使用开发容器、通过 SSH 或远程隧道的远程计算机或适用于 Linux 的 Windows 子系统 (WSL) 作为全功能开发环境。
亮点包括:
- GitHub Copilot Chat 在将开发容器配置文件添加到工作区时提供模板和功能建议
您可以在远程开发发行说明中了解有关这些功能的更多信息。
不要错过最近使用 Visual Studio Code 进行远程开发的学习路径,以了解 VS Code 中不同的远程开发功能。
对扩展的贡献
GitHub 副驾驶
重命名建议
我们正在逐步推出 Copilot 的重命名建议。当您在编辑器中重命名符号时,GitHub Copilot 会根据您的代码建议该符号的可能新名称列表。
内联聊天辅助功能视图
内联聊天现在具有可访问性视图,可以显示代码更改,就像可访问的差异查看器一样。当您使用屏幕阅读器模式时,将启用辅助功能视图。您还可以使用 inlineChat.accessibleDiffView
设置将其配置为始终打开或关闭。
此外,现在可以使用键盘上的 F7 和 Shift+F7 键绑定来导航更改块。
内嵌聊天的默认模式
我们已停用 live preview
模式,并将 live
设为内联聊天的默认模式。这意味着建议直接应用在编辑器中,并通过内联差异突出显示更改。
麦克风图标始终可见
用于在 Copilot Chat 中启动语音识别的麦克风图标现在始终可见。当 VS Code 语音扩展尚未安装时,首先选择该图标会要求安装该扩展以启用语音转文本功能。
如果您对此功能不感兴趣,或者只想通过键盘快捷键使用它,则可以从上下文菜单中隐藏该功能:
对代理和斜线命令的语音支持
当您使用 VS Code 语音扩展通过语音填充聊天输入字段时,“在工作区”或“斜杠修复”等短语现在会转换为相应的代理和斜杠命令。这适用于聊天视图和内联聊天。
随处可见的对讲模式
当您使用 VS Code 语音扩展时,命令“语音:启动语音聊天”(Ctrl+I) 现在可以在任何地方使用,并根据您的焦点所在(编辑器中的内联聊天,其他情况下的面板聊天)启动语音聊天。
要启用对讲机模式,请按住按键绑定。语音识别将处于活动状态,直到您释放按键为止,之后会自动提交请求。
副驾驶:根据光标位置解释一下
以前,在聊天中输入 Explain This
需要您首先在活动编辑器中选择要解释的文本。现在,您还可以将光标放在标识符上,让 Copilot 查看标识符的定义。如果定义位于另一个文件中,则需要提供丰富的语言支持。
预览:#codebase 变量
这次迭代,在 GitHub Copilot Chat 的预发行版本中,我们引入了一个名为 #codebase
的新聊天变量。此变量可用于根据您的查询向 Copilot 或您正在交谈的聊天参与者提供工作区上下文。
在此示例中,您可以将 #codebase
视为首先询问 @workspace
问题,然后将该响应添加到您提出的问题 @terminal
中。
这是预览功能,因此 #codebase
可能不是该变量的最终名称,但目的是我们将提供某种方式将工作区上下文包含到聊天参与者中。
同样,这仅适用于 GitHub Copilot Chat 的预发行版本。让我们知道您的想法以及如何使用它!
终端工作区上下文
终端不再自动提取工作区上下文,这可能需要一些时间。相反,您需要使用 #codebase
变量显式包含它。
终端聊天地点
有一个新设置 github.copilot.chat.terminalChatLocation
,它控制终端聊天体验。默认值为 chatView
,如果您喜欢以前的行为,可以配置为 quickChat
。
朱皮特
对本地运行的 Jupyter 服务器的语言服务器支持
连接到本地 Jupyter 服务器时,Jupyter 扩展之前将这些 Jupyter 服务器视为远程服务器。因此,Pylance 扩展无法检测到已安装的软件包。
在本次迭代中,Jupyter 扩展会检测连接的 Jupyter 服务器是本地还是远程。这使得 Pylance 扩展能够根据安装的包(在本地 Python 环境中)提供更丰富的语言功能。
Python
Python REPL 的 Shell 集成
现在,我们通过 WSL 扩展在 Mac、Linux 和 Windows 上启用了 Python REPL 的 shell 集成。当您在 Python REPL 中执行命令时,彩色圆圈装饰器指示命令是成功还是失败。此外,我们还支持 Python REPL 的“终端:运行最近的命令...”命令,该命令使您能够查看和利用 REPL 的命令历史记录。
我们现在还支持所有操作系统的 Python shell 文件历史记录,可通过终端:运行最近的命令访问。
降低忽略第一个命令的风险
此前,许多 Python REPL 用户注意到他们的第一个 Python REPL 命令(例如,使用 Shift+Enter)存在问题。他们的 Python 命令被忽略并且没有发送到 Python REPL,或者该命令被多次粘贴到启动 Python REPL 而不是 Python REPL 本身的 shell 中。这种行为尤其发生在 Windows 用户或在旧计算机上工作的用户身上。
在本次迭代中,我们努力减轻和降低这种行为发生的风险。现在,当用户将 Python 命令发送到 VS Code 内的第一个 REPL 实例时,他们的第一个命令丢失的情况会减少。
添加缺失导入的改进
Pylance 扩展提供了“添加导入”代码操作,用于添加缺少的导入。在 Pylance 的预发行版本中,我们改进了此代码操作。 Pylance 现在使用启发式方法仅显示前三个高可信度导入选项,并根据以下标准确定优先级:最近使用的导入、来自同一模块的符号、来自标准库的符号、来自用户模块的符号、来自第三方的符号包,最后按模块和符号名称排序。
此外,还引入了两个新的代码操作:搜索其他导入匹配,它显示一个快速选择菜单,允许您搜索与缺少的导入符号前缀匹配的导入选项,以及更改拼写,它为由于缺少导入而提供的导入建议拼写错误。
您现在可以使用 python.analysis.addImport.heuristics
设置启用此行为。我们计划很快将此设置为新的默认行为,并在未来版本中弃用该设置。
调试 Django 或 Flask 应用程序时自动打开浏览器
现在,使用 Python 调试器扩展可以更方便地开发和测试 Python Web 应用程序!现在,通过在 launch.json
配置中设置 autoStartBrowser: true
,您可以在使用 Django 或 Flask 应用程序启动调试器时自动打开浏览器:
{
"name": "Python Debugger: Flask",
"type": "debugpy",
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "hello_app.webapp",
"FLASK_DEBUG": "1"
},
"args": ["run"],
"jinja": true,
"autoStartBrowser": true
}
修复了符号链接工作区中 Pytest 的错误
我们实现了一个错误修复,使 pytest 测试能够在具有符号链接的工作区中正确运行。在测试重写中,符号链接位置的测试被引用并通过其符号链接路径正确运行。
GitHub 拉取请求
GitHub Pull Requests 扩展取得了更多进展,使您能够处理、创建和管理 Pull 请求和问题。新功能包括:
- 从“GitHub Pull 请求和问题”重命名为“GitHub Pull 请求”
- 可以在合并/压缩时选择与合并或压缩提交关联的电子邮件
- 设置
githubPullRequests.labelCreated
可用于配置自动添加到创建的 PR 中的标签 - 现在支持“所有者级别”PR 模板
- 可以在 PR 和问题创建时添加项目
查看扩展 0.82.0 版本的变更日志,了解其他亮点。
预览功能
在本次迭代中,我们引入了一个新命令,它是 @vscode/l10n-dev
的子命令,它允许你使用 Azure AI Translator 翻译字符串。
导出字符串并创建 Azure AI Translator 实例后,您可以设置 AZURE_TRANSLATOR_KEY
和 AZURE_TRANSLATOR_REGION
环境变量,然后可以运行以下命令以使用 Azure AI Translator 生成翻译:
npx @vscode/l10n-dev generate-azure -o ./l10n/ ./l10n/bundle.l10n.json ./package.nls.json
Azure AI Translator 提供免费套餐。我们认为这是一个向扩展作者提供工具的好机会,以便他们可以更轻松地支持使用各种语言的许多用户。请记住,这些是机器翻译,因此它们可能并不总是完美的。如果您有能力的话,它们可以是一个很好的起点,可以让说该语言的人进行更精致的翻译。
有关详细信息,请查看有关 Azure AI 翻译器集成的 l10n-dev 文档。
扩展创作
扩展中的测试覆盖率
使用测试 CLI 进行扩展的扩展作者可以通过更新到最新版本的 @vscode/test-cli
包来生成测试覆盖率。
可以通过在运行测试时传递 --coverage
标志在命令行上生成覆盖率,也可以在 VS Code UI 中使用“运行覆盖率”操作来生成覆盖率。
测试 launch.json 中的配置
您现在可以在 launch.json
配置中引用测试配置文件:
{
"type": "extensionHost",
"request": "launch",
"name": "My extension tests",
+ "testConfiguration": "${workspaceFolder}/.vscode-test.js",
- "args": ["--extensionDevelopmentPath=${workspaceFolder}"]
},
之前需要的各种 args
会为您生成,但传递的任何其他参数都将附加到 VS Code 的命令行中。
在问题报告器中提供附加数据
上次迭代,我们在 workbench.action.openIssueReporter
命令中添加了 data
和 uri
字段。这使得扩展能够直接打开本机问题报告器并提供更多预填充信息。
为了让扩展在通过 Help: Reporter Issues...
导航正常问题报告流程的单独情况下受益,扩展可以提供一个自定义命令(它将调用 openIssueReporter
)和一个菜单贡献点 issue/reporter
。
package.json
中 contributes
贡献的命令和菜单示例:
"commands": [
{
"command": "extension.myCommand",
"title": "Report Issue"
}
],
"menus": {
"issue/reporter": [
{
"command": "extension.myCommand"
}
]
}
订阅问题 #196863 以获取 API 和 openIssueReporter
命令的更新或更改。
提议的 API
聊天和语言模型 API 即将完成
我们一直致力于支持扩展,以促进聊天视图和语言模型的一般使用。我们现在正处于最终确定以下 API 的最后阶段,很乐意听到您的反馈:
- 聊天参与者(问题#199908)-
vscode.proposed.chatParticipant.d.ts
- 语言模型使用(问题#206265)-
vscode.proposed.languageModels.d.ts
在我们的扩展指南中详细了解如何构建聊天扩展以及如何使用语言模型。
查找文件2 API
我们添加了一个新提议的扩展 API,它是现有 workspace.FindFiles
API 的改进版本。新的 workspace.FindFiles2
API 引入了新选项,允许工作区文件搜索:
- 尊重
files.exclude
和search.exclude
设置 - 尊重忽略文件
- 执行模糊搜索
- 跟随符号链接
您可以在此处查看新的 API。
请注意, FindFiles2
是一个暂定名称,此功能将来可能会作为 FindFiles
的替代重载提供。
测试覆盖率API
在本次迭代中,测试覆盖率 API 和编辑器内体验处于功能完整状态。我们鼓励扩展作者在 VS Code 1.88 版本中预测最终确定之前尝试并提供反馈。
Java 扩展包已经采用了测试覆盖率 API。开发人员已经可以看到运行 Java 测试的覆盖率结果。现在,您可以通过选择“运行覆盖率测试”按钮来获取测试覆盖率,并在“测试资源管理器”视图中查看“测试覆盖率”面板。在团队的 12 月和 1 月更新中了解有关 Java 扩展包测试覆盖率的更多信息。
虽然 API 太长,无法包含在此处,但我们认为它相当简单,并且欢迎您对问题 #123713 中的提案提出意见。
调试可视化工具 API
我们有一个新的 API,可以让扩展为变量提供可视化工具。这些可视化工具可能是运行命令的操作(例如打开新编辑器),也可能是内嵌到“调试”视图中并取代数据默认表示形式的树。
您可以在此处查看新的 API。
新的符号名称提供程序 API
当用户想要重命名符号时,此 API 允许扩展提供名称建议
评论(0)