为 Python 开发优化 VSCode(一)

原文:Optimizing Visual Studio Code for Python Development

协议:CC BY-NC-SA 4.0

一、VSC 简介

Visual Studio Code (VS Code)是微软为 Windows、Linux、macOS 打造的开源代码编辑器(图 1-1 )。广受欢迎的标准特性包括支持调试、语法突出显示、自动代码完成、代码片段、代码重组和嵌入式 Git。用户可以自由更改设计主题、键盘快捷键和首选项,也可以安装额外的扩展来升级整个项目的功能。

微软在 2015 年的 Build 大会上首次推出了 VS 代码。到 2019 年,VS Code 成为最受欢迎的开发人员环境工具,87,317 名受访者中有 50.7%的人表示他们经常使用它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-1

VSC,一个免费的开源代码编辑器

在这一章中,我们将带您了解如何设置 VS 代码,并提供基本特性的概述:

  • **用户界面:**查看 VS 代码文档。

  • **设置概述:**使用 VS 代码启动和运行的文档,包括平台相关的设置。

  • **键盘快捷键:**自定义自己的快捷键选项,安装 Keymap 扩展。

  • **Keybinding 扩展:**如何安装一个 Keymap 扩展,将之前编辑器中的键绑定带到 VS 代码中。

用户界面

按照初衷,VS 代码是一个代码编辑器。与许多其他代码编辑器类似,VS Code 有一个通用的用户界面和浏览器布局,在左边显示您可以访问的所有文件和文件夹,在右边有一个编辑器,显示您已经打开的文件的内容。

基本布局

VS 代码有一个简单而直观的布局,它利用了为编辑器提供的所有空间,同时留下一些空间来浏览和访问文件夹或正在进行的项目的完整上下文。用户界面分为五个主要区域:

  • **编辑器:**编辑当前文件的主要空间。您可以并排打开任意数量的编辑器,也可以垂直和水平打开。

  • **侧边栏:**这个区域有不同的视图,例如资源管理器,以便在您处理项目时提供最大的帮助。

  • **状态栏:**当前项目和正在编辑的文件的信息。

  • **活动栏:**位于最左侧,这个区域使您能够在视图之间切换,并为您提供额外的特定于上下文的度量——例如,传出变更的数量。

  • **面板:**您可以在编辑器区域下方显示不同的面板,用于输出或调试内容、错误、警告或集成信息。该面板还可以向右移动,以获得更大的垂直空间。

每次启动 VS 代码时,它都以上次离开时的状态打开。文件夹、布局和打开的文件将保持不变。每个编辑器中打开的文件在编辑器区域的顶部显示有选项卡式标题(选项卡)。要了解有关选项卡式标题的更多信息,请参阅选项卡部分的详细信息。你也可以移动侧边栏到右边(查看➤右移侧边栏)或者增强它的可见性(Ctrl+B)。

并排编辑

如前所述,您可以纵向和横向并排打开任意多个编辑器。如果已经打开了一个编辑器,有多种方法可以将另一个编辑器放在现有编辑器的旁边:

  • 按住 Alt 键并单击浏览器中的文件。

  • Ctrl+\将活动编辑器一分为二。

  • 从文件的资源管理器上下文菜单中打开到侧面(Ctrl+Enter)。

  • 点按编辑器右上角的“拆分编辑器”按钮。

  • 将文件拖放到编辑器区域的任意一侧。

  • 快速打开(Ctrl+P)文件列表中的 Ctrl+Enter (macOS: Cmd+Enter)。

一旦打开另一个文件,正在运行的编辑器将显示该文件的内容。因此,如果您有两个并排的编辑器,并且您需要在右边的编辑器中打开文件 doc.cs,请确保在打开文件 doc.cs 之前该编辑器是活动的(通过单击它)

默认情况下,编辑器在活动编辑器的右侧打开。您可以通过设置 work bench . editor . opensidebysidedirection 和 modify 来更改此模式,以便在活动编辑器的底部打开新的编辑器。同时,当您有多个活跃的编辑器时,您可以通过按住 Ctrl (macOS: Cmd)键并按下 1、2 和 3 来轻松地在它们之间切换。此外,如果您愿意,您可以调整编辑器的大小和重新排序它们:只需拖放编辑器标题区域来重新定位或调整编辑器的大小。

Minimap(最小化)

Minimap(代码大纲)允许你对你的源代码有一个高层次的概述,这对于简单的导航和代码理解是非常有用的。一个文件的小地图显示在编辑器的右边。您也可以单击或拖动阴影区域,快速切换到文件的不同部分。同样值得注意的是,你可以将小地图移动到左侧,甚至完全禁用它,只需在你的用户或工作区设置中设置“editor.minimap.side”:、“left”或“editor . minimap . enabled”:false。

缩进参考线

编辑器上方的图像还显示了垂直线或缩进参考线,它们有助于您自由观察匹配的缩进级别。如果您想关闭这些缩进参考线,您应该在您的用户或工作区设置中设置“editor . renderindentguides”:false。

面包屑

如果您再次查看编辑器,您会注意到在它的内容上方有一个名为 Breadcrumbs 的导航栏。它可以显示您的当前位置,并让您在文件夹、文件和符号之间快速导航。

面包屑还倾向于显示文件路径,如果活动文件类型支持符号语言,它会显示光标位置之前的符号路径。您可以使用查看➤显示面包屑简单命令关闭面包屑。您还可以在编辑器的 Breadcrumbs 部分访问有关 Breadcrumbs 功能的相同信息。

探险家

浏览器是一种工具,用于浏览、打开和操作编辑项目中的所有文件和文件夹。因为 VS 代码是基于文件和文件夹的,所以您可以在任何时候简单地通过在 VS 代码中打开一个文件或文件夹来开始。一旦在 VS 代码中打开一个文件夹,文件夹的内容就会显示在资源管理器中。您可以从这里进行许多修改,例如:

  • 创建、删除和重命名文件和文件夹。

  • 使用拖放功能更改文件和文件夹的位置。

  • 查看上下文菜单以查看所有选项。

此外,您可以从 VS 代码外部将文件拖放到资源管理器中,以制作它们的 VS 副本,这样,如果资源管理器为空,VS 代码将改为访问它们。

VS 代码也可以很好地与您可能使用的其他工具配合使用,尤其是命令行工具。如果您需要在 VS 代码中打开的文件夹的上下文中运行命令行工具,请右键单击该文件夹并选择在命令提示符下打开(或者在 macOS 或 Linux 上的终端中打开)。

同时,通过右键单击文件或文件夹并选择在资源管理器中显示(或在 macOS 上的 Finder 中显示,或在 Linux 上打开包含文件夹),您可以在本机资源管理器中导航到文件或文件夹的位置。您也可以键入 Ctrl+P(快速打开选项)来按文件名快速搜索和打开文件。

默认情况下,VS 代码不会从资源管理器中打开某些文件夹(例如。git)。在这种情况下,您可以使用 files.exclude 设置来编辑在资源管理器中隐藏文件和文件夹的规则。但是,如果您有任何派生的资源文件,如*。Unity 或*中的 meta。js 在 TypeScript 项目中,那么这个解决方案实际上是没有用的。请注意,Unity 要排除*.cs.metafiles,选择的模式应该是“* / . cs . meta”:true。对于 TypeScript,可以用“**/*”排除为 TypeScript 文件生成的 JavaScript。js": {“when”: “$(basename)。ts”}。

多重选择

您可以在文件资源管理器中选择多个文件,并打开编辑器视图来完成对多个项目的操作(删除、拖放、打开到侧面)。只需使用 Ctrl/Cmd 键单击选择单个文件,然后按住 Shift 键单击选择一个范围。如果选择两个项目,现在可以使用上下文菜单“比较所选项目”命令来快速区分这两个文件。此外,请记住,在早期的 VS 代码版本中,按住 Ctrl/Cmd 键单击会在旁边的新编辑器组中打开一个文件。如果您仍然喜欢此功能,可以使用 work bench . list . multiselect modifier 设置来修改多选,以便通过“work bench . list . multiselect modifier”使用 alt 键:“Alt”。

过滤文档树

可以在文件资源管理器中过滤当前可见的文件。您可以简单地开始键入您想要匹配的文件名的一部分,将焦点保持在文件资源管理器上。您将能够在文件资源管理器的右上角看到一个过滤框,显示您到目前为止键入的内容,匹配的文件名将突出显示。一旦您按下光标键上下移动文件列表,它将在匹配的文件或文件夹之间切换。但是,切换“过滤器”框并选择“根据类型启用过滤器”将只显示匹配的文件和文件夹。您可以应用 X Clear 按钮来清除过滤器。

大纲视图

Outline 视图是文件资源管理器底部的一个部分。激活后,它将显示当前活动编辑器的符号树。Outline 视图有不同的排序方式和可选的光标跟踪,并支持常见的打开手势。它还有一个输入框,可以在您键入时搜索过滤器和符号。错误和警告也显示在 Outline 视图中,使您可以对问题及其位置有所了解。

至于符号,视图很大程度上依赖于您为不同文件类型安装的扩展计算的数据。例如,内置的降价支持返回降价文件符号的降价标题层次结构。

降价大纲视图

有一些大纲视图设置允许您启用和禁用项目,并在显示错误和警告的情况下进行操作(默认情况下全部启用): 1

  • outline.icons: 用图标切换渲染轮廓元素。

  • **outline . problems . enabled:**显示大纲元素的错误和警告。

  • outline.problems.badges: 切换对错误和警告使用徽章。

  • outline.problems.colors: 切换使用错误和警告的颜色。

打开编辑器

在浏览器的顶部,有一个标记为“打开的编辑器”的部分,显示活动文件或预览的列表。也可能有一些您之前在 VS 代码中打开的可见文件。例如,如果您对文件进行更改、双击文件头、在资源管理器中双击文件或打开不属于当前文件夹的文件,文件将在打开的编辑器视图中列出。通过在打开的编辑器视图中单击一个项目,它在 VS 代码中变成活动的。完成项目后,如果希望从打开的编辑器视图中单独移除文件,或移除所有文件,可以使用视图:关闭所有编辑器或在组操作中查看并关闭所有编辑器。

视图

文件资源管理器只是 VS 代码中可用的视图之一。也有观点认为: 2

  • **搜索:**在您打开的文件夹中提供全局搜索和替换。

  • 源代码控制: VS 代码默认包含 Git 源代码控制。

  • Run: VS 代码的运行和调试视图显示变量、调用栈和断点。

  • **扩展:**在 VS 代码中安装和管理你的扩展。

  • **自定义视图:**扩展贡献的视图。

使用“视图:打开视图”命令可以访问这些视图。

活动栏

左侧的活动栏旨在方便您在视图之间切换。您还可以通过将视图拖放到活动栏上来重新排序视图,或者通过右键单击隐藏活动栏来隐藏整个视图。

命令面板

VS 代码也很容易通过键盘访问。需要知道的最有用的组合键是 Ctrl+Shift+P,它调用命令面板。使用命令面板,您可以访问 VS 代码的所有功能,包括大多数已实现操作的键盘快捷键。命令选项板提供了对许多命令的访问。您可以管理编辑器命令、打开文件、搜索项目以及查看文件的快速大纲,所有这些都可以在同一个交互式窗口中完成。以下是几个导航组合: 3

  • Ctrl+P 将允许您通过键入名称来导航到任何文件或符号。

  • Ctrl+Tab 将在最后一组打开的文件中循环。

  • Ctrl+Shift+P 将把您直接带到编辑器命令。

  • Ctrl+Shift+O 将让您导航到文件中的特定符号。

  • Ctrl+G 将让您导航到文件中的特定行。

  • 类型?输入字段,以获取可从快速打开帮助中执行的可用命令列表。

配置编辑器

VS 代码有许多选项供您配置编辑器。从视图菜单中,您可以隐藏或切换用户界面的各个部分,如侧栏、状态栏和活动栏。

隐藏菜单栏(适用于 Windows、Linux)

您可以通过选择 window.menuBarVisibility 设置从经典到切换来隐藏 Windows 和 Linux 上的菜单栏。切换设置意味着按一下 Alt 键将再次显示菜单栏。

您也可以使用“查看➤切换菜单栏”命令删除 Windows 和 Linux 上的菜单栏。此命令将 window.menuBarVisibility 从经典切换到精简,从而使菜单栏移动到活动栏中。要将菜单栏移回经典位置,请再次选择“查看➤切换菜单栏”命令。

设置

大多数基本的编辑器配置保存在可以直接修改的设置中。可以通过用户设置全局设置选项,也可以通过工作空间设置按项目或文件设置选项。设置选项保存在 settings.json 文件中。你可以按照路径选择文件➤首选项➤设置(或按 Ctrl+,)来编辑用户设置. json 文件。要更改工作空间设置,请单击工作空间设置选项卡编辑工作空间设置. json 文件。注意,对于 macOS 用户,首选项菜单位于代码下,而不是文件下;请遵循➤代码首选项➤设置。

您可以在左侧窗口中访问 VS 代码默认设置,并在右侧访问您的可编辑 settings.json。还可以使用顶部的搜索框轻松过滤默认设置中的设置。通过单击设置左侧的编辑图标,可以将设置复制到右侧可编辑的 settings.json 中。具有一组固定值的设置允许您选择一个主要值作为其编辑图标菜单的一部分。编辑设置后,键入 Ctrl+S 以确定您的更改。这些更改将立即生效。工作空间设置将覆盖用户设置,有利于共享特定的项目设置。

禅宗模式

Zen 模式通过移除除编辑器之外的所有用户界面项目(活动栏、状态栏、侧栏和面板),显示全屏并仅居中编辑器布局,使您能够专注于代码。可以使用“视图”菜单、命令调板或快捷键 Ctrl+K Z 来切换 Zen 模式,要退出 Zen 模式,请按两次 Esc。可以通过 zenMode.fullScreen 禁用全屏过渡。zenMode 可以使用以下设置进一步修改:zenMode.hideStatusBar、zenMode.hideTabs、zenMode.fullScreen、zenMode.restore 和 zenMode.centerLayout。

居中编辑器布局

居中编辑器布局允许您将编辑器区域居中对齐。如果您发现自己在大型显示器上使用单个编辑器,这将非常有用。您可以使用 Alt 键应用边上的窗扇来调整视图的大小,使用相同的方法您也可以独立移动窗扇。

制表符

VS 代码在编辑器上方的标题区域显示带有选项卡式标题或标签的打开项。如果您打开一个文件,则会为该文件添加一个新选项卡。制表符允许您在文件之间快速导航,并且您可以拖放制表符以便根据您的意愿对它们重新排序。当打开的项目多于标题区域所能容纳的项目时,可以应用“显示打开的编辑器”命令来显示选项卡式项目的下拉列表。

如果不想使用选项卡,可以通过将 workbench.editor.showTabs 设置设置为 false 来关闭该功能:" work bench . editor . show Tabs ":false。

制表符排序

默认情况下,新选项卡包含在现有选项卡的右侧,但是您可以使用 work bench . editor . open positioning 设置来管理希望新选项卡出现的位置。例如,您可能希望新的选项卡式项目出现在左侧,方法是使用“work bench . editor . open positioning”:“left”。

预览模式

在浏览器中单击或选择一个文件后,它将以演示模式显示,并重用现有的选项卡。如果您只需要快速浏览文件,并且不希望您访问的每个文件都有自己的选项卡,这将非常有用。当您开始编辑文件或在浏览器中双击打开文件时,会为该文件分配一个新的选项卡。预览模式在标签标题中用斜体表示:预览模式

如果您不希望看到预览模式,而总是创建一个新选项卡,您可以使用以下设置来控制模式:

  • **work bench . editor . enable preview:**全局启用或禁用预览编辑器。

  • **work bench . editor . enablepreviewfromcquickopen:**启用或禁用从快速打开打开时的预览编辑器。

编辑组

如果您通过“拆分编辑器”或“向侧面打开”命令拆分编辑器,则会创建一个可容纳一组项目的新编辑器区域。同时,您可以水平和垂直并排打开任意多个编辑器区域。您可以在 Explorer 视图顶部的 OPEN EDITORS 部分按顺序查看它们。OPEN EDITORS 部分还允许您在工作台上拖放编辑器组,在组之间移动各个选项卡,并通过单击 Close All 快速关闭整个组。

确保 VS 代码使用编辑器组,不管你是否有标签。如果没有标签,编辑器群组就是一堆打开的项目,最近搜索的项目在编辑器面板中可见。默认情况下,当您拆分编辑器以从侧面打开它时,编辑器群组以垂直栏的形式组织。您还可以按照您喜欢的任何布局(垂直和水平)排列编辑器群组。

为了支持灵活的布局,您应该创建空的编辑器组。默认情况下,关闭编辑器组的最后一个编辑器也会关闭该组本身,但您可以使用新设置 work bench . editor . closeemptygroups:false 来修改此行为。您还可以在查看➤编辑器布局菜单中查看是否有任何预定义的编辑器布局集。

通过单击编辑器工具条分割编辑器操作打开的编辑器通常会在活动编辑器的右侧打开。如果您喜欢在活动编辑器下面打开编辑器,请配置新的设置 work bench . editor . opensidebysidedirection:down。

有很多键盘命令可以单独使用键盘来调整编辑器布局,但是如果您更喜欢使用鼠标,拖放是将编辑器拆分到任何方向的最快方法。此外,如果您在切换工具栏操作以拆分编辑器时按住 Alt 键,它将提供向另一个方向的拆分。这是另一种快速向右或向下拆分的方法。

快捷键

了解一些方便的键盘快捷键来在编辑器和编辑器组之间快速导航对你来说也是非常有益的。下面是一些最广泛使用的: 4

  • Ctrl+PageDown 转到右边的编辑器。

  • Ctrl+PageUp 转到左边的编辑器。

  • Ctrl+Tab 打开编辑器组 MRU 列表中的上一个编辑器。

  • Ctrl+1 转到最左边的编辑器组。

  • Ctrl+2 转到中心编辑器组。

  • Ctrl+3 转到最右边的编辑器组。

  • Ctrl+F4 关闭活动编辑器。

  • Ctrl+K W 关闭编辑器组中的所有编辑器。

  • 关闭所有编辑器。

禁用预览模式

如果没有标签,文件浏览器的打开编辑器部分是一个很好的文件导航方式。在预览编辑器模式下,文件不会显示在打开的编辑器列表中,也不会显示在单击打开的编辑器组中。您可以通过 workbench.editor.enablePreview 和 work bench . editor . enablepreviewfromcquickopen 设置关闭此功能。

使用 Ctrl+Tab 在整个编辑器历史中导航

您可以编辑 Ctrl+Tab 的键绑定,以向您显示独立于活动编辑器组的历史中所有打开的编辑器的列表。您可以编辑您的键绑定,并使用以下命令添加:

{ "key": "ctrl+tab", "command": "workbench.action.openPreviousEditorFromHistory" },
{ "key": "ctrl+tab", "command": "workbench.action.quickOpenNavigateNext", "when": "inQuickOpen" }

关闭整个群组而不是单个编辑器

如果您想在关闭一个编辑器时重复 VS 代码关闭整个组的行为,您可以使用:

macOS: { "key": "cmd+w", "command": "workbench.action.closeEditorsInGroup" }
Windows/Linux: { "key": "ctrl+w", "command": "workbench.action.closeEditorsInGroup" }

窗口管理

VS 代码有一些操作选项来决定如何在会话之间打开或恢复窗口。默认情况下,设置 window.openFoldersInNewWindow 和 window.openFilesInNewWindow 用于配置打开新窗口或重新使用文件或文件夹的最后一个活动窗口以及可能的值。

如果编辑为默认条件,VS 代码将恢复您在之前的会话中工作的所有窗口。但是,仍然存在忽略此设置的情况(例如,如果使用-new-window 或-reuse-window 命令行选项)。

window.restoreWindows 设置告诉 VS 代码如何恢复上一个会话中打开的窗口。您还可以将此设置更改为从不重新打开任何窗口,并且总是从一个空的 VS 代码实例开始。

我们现在将看看如何为 Python 开发设置 VS 代码。

设置 VSC

获取和激活 VS 代码既简单又快捷。只需下载一小段,然后你就可以在几分钟内安装它(图 1-2 )。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-2

设置 VS 代码

跨平台

VS Code 是一个免费的代码编辑器,可以在 macOS、Linux 和 Windows 操作系统上运行。

为了更顺利地安装,您可以遵循以下特定于平台的指南: 5

苹果
  1. 下载用于 macOS 的 VS 代码。

  2. 打开浏览器的下载列表,找到下载的归档文件。

  3. 选择放大镜图标以在 Finder 中打开归档。

  4. 将 VS Code.app 拖到 Applications 文件夹,使其在 macOS Launchpad 中可用。

  5. 将 VS 代码添加到您的 Dock 中,方法是右键单击图标,打开上下文菜单,然后选择 Options,Keep in Dock。

Linux 操作系统

VS 代码在 Snap Store 中以 Snap 包的形式正式发布,也可以以 RPM 或 DEB 包的形式从官方网站下载。

可以通过运行:sudo snap install - classic code #或者 code-insiders 来安装。

安装后,Snap 守护进程将在后台自动更新 VS 代码。每当有新的更新可用时,您还会收到产品内更新通知。

Windows 操作系统
  1. 下载 Windows 的 VS 代码安装程序。

  2. 下载后,运行安装程序(VSCodeUserSetup-{version}。exe)。这只需要一分钟。

  3. 默认情况下,VS 代码安装在 C:\ users \ { username } \ AppData \ Local \ Programs \ Microsoft VS Code 下。

VS 代码是轻量级的,应该可以在大多数可用的硬件和平台版本上运行。您可以查看系统要求,以了解您的计算机配置是否受支持。

更新节奏

VS Code 每个月都会发布一个新版本,包含新特性和渐进式错误修复。大多数平台都安装了自动更新,所以当新版本发布时,系统会提示您寻找新版本。您也可以手动检查更新,方法是在 Linux 和 Windows 上运行帮助➤检查更新,或者在 macOS 上运行代码➤检查更新。此外,如果您想根据自己的计划更新 VS 代码,也可以禁用自动更新。

内部人员夜间构建

如果您想在夜间检查 VS 代码构建,以便比其他用户更早地获得新特性,或者验证错误修复,您可以安装 Insiders 构建。内部版本与每月稳定版本并排安装,您可以在同一台机器上自由地合并和使用它们。内部人员构建与 VS 代码开发团队日常使用的工具相同。如果您对要提供的新特性有宝贵的反馈,开发团队会非常感激。

便携模式

VS 代码也支持便携模式安装。这种模式确保了由 VS 代码创建和维护的所有数据都存储在近距离内,以便在必要时可以跨环境移动,甚至是在 USB 驱动器上。

附加组件

VS 代码是一个占用空间相对较小的编辑器。与其他传统编辑器不同,传统编辑器倾向于包含所有其他功能,使用 VS 代码,您可以根据对您最重要的开发技术来调整和定制您的安装。

扩展ˌ扩张

VS 代码扩展允许第三方添加对以下内容的支持:

  • 语言: C++,C#,Go,Java,Python

  • **工具:**斯洛文尼亚语、JSHint 语、PowerShell 语

  • 调试器: PHP XDebug

  • 按键映射: Vim,Sublime Text,IntelliJ,Emacs,Atom,括号,Visual Studio,Eclipse

扩展平滑地集成到 VS Code 的用户界面、命令和任务运行系统中,所以你会发现通过 VS Code 的共享接口很容易操作不同的技术。

VSC 的键绑定

VS 代码为您提供了一个直接从键盘管理大多数任务的选项(图 1-3 )。本节列出了默认绑定(键盘快捷键),并概述了如何更新它们。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1-3

在 VS 代码中使用键盘快捷键

键盘快捷键编辑器

VS 代码有许多简单的键盘快捷键使用键盘快捷键编辑器。它说明了所有可用的命令,包括有无按键绑定,您可以使用可用的选项轻松地更改、删除和更新这些命令。它的顶部还有一个搜索框,在搜索命令或按键时非常有用。您可以通过查看文件➤首选项➤键盘快捷键(macOS 上的代码➤首选项➤键盘快捷键)下的菜单来打开此编辑器。您也可以在帮助➤键盘快捷键参考中访问这些键盘快捷键的可打印版本,并获得一个适合打印的压缩 PDF 版本作为用户友好的参考。

检测按键绑定冲突

如果您安装了太多的扩展,或者您已经自定义了大部分键盘快捷键,您可能会不时地遇到键绑定冲突,因为同一个键盘快捷键被映射来执行几个命令。这可能会导致混乱,尤其是当您继续使用编辑器时,不同的键绑定会进入和超出范围。您应该不时地查看键盘快捷键编辑器,该编辑器有一个上下文菜单命令“显示相同的键绑定”,该命令用于根据键盘快捷键过滤键绑定,以显示并潜在地防止任何冲突。

按键疑难解答

要解决按键问题,可以激活命令 Developer:Toggle Keyboard shortcut s trouble shooting。这将有助于记录发送的键盘快捷键,并提供对带有相应日志文件的输出面板的访问。

有了它,你可以稍后按下你想要的键绑定,并检查什么键盘快捷键 VS 代码使用和什么命令被激活。

键盘规则

每条规则由以下内容组成: 6

  • 定义被按下的键的键。

  • 包含要执行的命令的标识符的命令。

  • 可选的 when 子句,包含将根据当前上下文计算的布尔表达式。

称为和弦的两个单独的按键动作通过用空格分隔两个按键来描述。比如 Ctrl+K Ctrl+C。

按下按键时:

  • 规则是自下而上评估的。

  • 第一个匹配的规则,包括键和何时被接受。

  • 不再处理任何规则。

  • 如果找到一个规则,并且它也有一个命令集,则执行该命令。

额外的 keybindings.json 规则在运行时被省略到默认规则的底部,因此允许它们覆盖默认规则。VS 代码会观察 keybindings.json 文件,因此在 VS 代码运行时编辑它会在运行时升级规则。

通过分析存储在 JSON 中的规则列表来完成键盘快捷键的分派。举几个例子来说明: 7

// Keybindings that are active when the focus is in the editor:
{ "key": "home",            "command": "cursorHome",              "when": "editorTextFocus" },
{ "key": "shift+home",      "command": "cursorHomeSelect",            "when": "editorTextFocus" },

// Keybindings that are complementary:
{ "key": "f5",              "command": "workbench.action.debug.continue", "when": "inDebugMode" },
{ "key": "f5",              "command": "workbench.action.debug.start",    "when": "!inDebugMode" },

// Global keybindings:
{ "key": "ctrl+f",          "command": "actions.find" },
{ "key": "alt+left",        "command": "workbench.action.navigateBack" },
{ "key": "alt+right",       "command": "workbench.action.navigateForward" },

// Global keybindings using chords (two separate keypress actions):
{ "key": "ctrl+k enter",    "command": "workbench.action.keepEditor" },
{ "key": "ctrl+k ctrl+w",   "command": "workbench.action.closeAllEditors" },

接受的密钥

密钥由修饰符和密钥本身组成。接受以下修饰符:

|

平台

|

修饰语

|
| — | — |
| 苹果 | Ctrl+、Shift+、Alt+、Cmd+ |
| Windows 操作系统 | Ctrl+,Shift+,Alt+,Win+ |
| Linux 操作系统 | Ctrl+, Shift+, Alt+, Meta+ |

接受以下密钥:

  • f1-f19,a-z,0-9

  • `, -, =, [, ], , ;, ', , ., /

  • 向左、向上、向右、向下、向上翻页、向下翻页、结束、回家

  • 制表符、回车、转义、空格、退格、删除

  • 暂停断开,帽锁,插入

  • numpad0-numpad9、numpad _ multiply、numpad_add、numpad_separator

  • numpad_subtract、numpad_decimal、numpad_divide

命令参数

您可以使用参数调用命令。如果您经常对特定的文件或文件夹执行相同的操作,这尤其有用。您可以包含一个自定义的键盘快捷键来完成您需要它做的事情。下面是一个覆盖 Enter 键以打印一些文本的示例:

{
  "key": "enter",
  "command": "type",
  "args": { "text": "Hello There" },
  "when": "editorTextFocus"
}

type 命令将接收{“text”: “Hello There”}作为其第一个参数,并将" Hello There "添加到文件中,而不是生成默认命令。

删除特定的键绑定规则

您可以编写一个键绑定规则脚本,以消除特定的默认键绑定。使用 keybindings.json,重新定义 VS 代码的所有键绑定总是可以接受的,但是做一点小的添加可能是有挑战性的,特别是在重载的键周围,比如 Tab 或 Escape。为了隐藏特定的键绑定,在命令中添加一个-,该规则将成为一个移除规则。

独立于键盘布局的 Nindings

使用扫描代码,定义不随键盘布局的修改而改变的键绑定是可管理的。比如:{ " key “:” cmd+[斜杠]“,” command “:” editor . action . commentline “,以及” when": “editorTextFocus” }。

接受以下扫描代码:

[F1]-[F19], [KeyA]-[KeyZ], [Digit0]-[Digit9]
[Backquote], [Minus], [Equal], [BracketLeft], [BracketRight], [Backslash], [Semicolon], [Quote], [Comma], [Period], [Slash]
[ArrowLeft], [ArrowUp], [ArrowRight], [ArrowDown], [PageUp], [PageDown], [End], [Home]
[Tab], [Enter], [Escape], [Space], [Backspace], [Delete]
[Pause], [CapsLock], [Insert]
[Numpad0]-[Numpad9], [NumpadMultiply], [NumpadAdd], [NumpadComma]
[NumpadSubtract], [NumpadDecimal], [NumpadDivide]

When 子句上下文

VS 代码通过可选的 when 子句让您完全控制何时激活键绑定。如果一些键绑定没有 when 子句,那么这些键绑定在任何时候都是全局可用的。when 子句与操作键绑定的布尔值 true 或 false 相关。

此外,VS 代码根据 VS 代码用户界面中可用和活动的元素来设置各种上下文键和特定值。例如,内置的开始调试命令具有键盘快捷键 F5,该快捷键仅在有适当的调试器可用(context debuggersAvailable 为 true)并且编辑器不处于调试模式(context inDebugMode 为 false)时启用。

条件运算符

对于 when 子句条件表达式,表 1-1 中的条件运算符用于键绑定。8

表 1-1

条件运算符

|

操作员

|

标志

|

例子

|
| — | — | — |
| 平等 | == | " editorLangId == typescript " |
| 不平等 | != | “resourceExtname != .js” |
| 或者 | || | " isLinux||isWindows " |
| 和 | && | “& textInputFocus!editorReadonly " |
| 比赛 | =~ | " resource scheme = ~ /^untitledKaTeX parse error: Expected 'EOF', got '&' at position 1: &̲#124;^file/ " |

可用上下文

在 when 子句上下文参考中,您可以看到一些可用的上下文。这里的列表并不详尽,您可以通过在键盘快捷键编辑器中搜索和过滤(首选项:打开键盘快捷键)或查看默认的 Keybindings JSON 文件(首选项:打开默认键盘快捷键(JSON))来查找其他 when 子句上下文。表格 1-2 到 1-12 为一些基本命令提供了快捷方式。 9

表 1-2

基本编辑

|

命令

|

钥匙

|

命令 id

|
| — | — | — |
| 切割线(空选择) | Ctrl+X | editor . action . clipboard cut action |
| 复制行(空选择) | Ctrl+C | editor . action . clipboardcopyaction |
| 粘贴 | Ctrl+V | editor . action . clipboard paste action |
| 删除行 | Ctrl+Shift+K | 编辑器. action.deleteLines |
| 在下面插入一行 | 按住 Ctrl 键并输入 | editor.action.insertLineAfter |
| 在上面插入一行 | Ctrl+Shift+Enter | editor.action.insertLineBefore |
| 下移一行 | alt+向下 | editor . action . movelinesdownaction |
| 向上移动一行 | Alt+Up | editor . action . movelinesupaction |
| 向下复制一行 | shift+Alt+向下 | editor . action . copylinesdownaction |
| 复制整行 | shift+Alt+向上 | editor . action . copylinesupaction |
| 取消 | Ctrl+Z 组合键 | 取消 |
| 重做 | Ctrl+Y | 重做 |
| 将所选内容添加到下一个查找匹配项 | Ctrl+D | editor . action . addselectiontonxtfindmatch |
| 将最后一个选择移动到下一个查找匹配项 | Ctrl+K | editor . action . moveselectiontextfindmatch |
| 撤消上一次光标操作 | Ctrl+U | cursorUndo |
| 在行尾插入光标 | Shift+Alt+I | editor . action . insertcursoratendofeachlineselected |
| 选择当前选择的所有匹配项 | Ctrl+Shift+L | editor . action . select 突出显示 |
| 选择当前单词的所有匹配项 | Ctrl+F2 | editor.action.changeAll |
| 选择当前行 | Ctrl+L | 扩大选举 |
| 在下面插入光标 | ctrl+Alt+向下 | editor . action . insertcursorbelow |
| 在上方插入光标 | Ctrl+Alt+Up | editor . action . insertcursorabove |
| 跳转到匹配的括号 | Ctrl+Shift+\ | editor . action . jumptobragg |
| 缩进行 | Ctrl+] | 编辑器. action.indentLines |
| 突出线路 | Ctrl+[ | editor.action.outdentLines |
| 转到行首 | 主页 | 光标之家 |
| 转到行尾 | 目标 | cursorEnd |
| 转到文件结尾 | Ctrl+End | 光标底部 |
| 转到文件开头 | Ctrl+Home | cursorTop |
| 向下滚动一行 | ctrl+向下 | 向下滚动 |
| 向上滚动一行 | ctrl+向上 | scrollLineUp |
| 向下滚动页面 | Alt+PageDown | 向下滚动页面 |
| 向上滚动页面 | Alt+PageUp | scrollPageUp |
| 折叠区域 | Ctrl+Shift+[ | editor.fold |
| 展开(未折叠)区域 | Ctrl+Shift+] | 编辑器.展开 |
| 折叠(折叠)所有子区域 | Ctrl+K Ctrl+[ | editor.foldRecursively |
| 展开(取消折叠)所有子区域 | Ctrl+K Ctrl+] | editor.unfoldRecursively |
| 折叠(折叠)所有区域 | Ctrl+K Ctrl+0 | 编辑器. foldAll |
| 展开(取消折叠)所有区域 | Ctrl+K Ctrl+J | editor.unfoldAll |
| 添加行注释 | Ctrl+K Ctrl+C | editor.action.addCommentLine |
| 删除行注释 | Ctrl+K Ctrl+U | editor . action . remove commentline |
| 切换行注释 | Ctrl+/ | editor.action.commentLine |
| 切换块注释 | Shift+Alt+A | editor . action . block 注释 |
| 发现 | Ctrl+F | 动作.查找 |
| 替换 | Ctrl+H | 编辑器. action . startfindreplaceaction |
| 查找下一个 | 进入 | editor.action.nextMatchFindAction |
| 查找上一个 | Shift+Enter | editor . action . previousmatchfindaction |
| 选择“查找匹配”的所有匹配项 | Alt+Enter | editor.action.selectAllMatches |
| 切换区分大小写 | Alt+C | toggleFindCaseSensitive |
| 切换查找正则表达式 | Alt+R | toggleFindRegex |
| 切换查找整个单词 | Alt+W | toggleFindWholeWord |
| 切换使用 Tab 键设置焦点 | Ctrl+M | editor . action . toggletabfocusmode |
| 切换渲染空白 | 未赋值的 | toggleRenderWhitespace |
| 切换自动换行 | Alt+Z | editor.action.toggleWordWrap |

表 1-3

丰富的语言编辑

|

命令

|

钥匙

|

命令 id

|
| — | — | — |
| 触发建议 | ctrl+空格 | 编辑器.操作.触发器建议 |
| 触发参数提示 | ctrl+Shift+空格键 | editor . action . trigger 参数提示 |
| 格式化文档 | 移位+Alt+F | editor . action . format 文档 |
| 格式选择 | Ctrl+K Ctrl+F | 编辑器.操作.格式选择 |
| 转到定义 | F12 | editor.action.revealDefinition |
| 显示悬停 | Ctrl+K Ctrl+I | 编辑器. action.showHover |
| 峰值定义 | Alt+F12 | editor.action.peekDefinition |
| 向侧面打开定义 | Ctrl+K F12 | editor . action . revealdefinitionside |
| 权宜之计 | Ctrl+。 | 编辑器. action.quickFix |
| 转到参考 | Shift+F12 | editor.action.goToReferences |
| 重命名符号 | 第二子代 | 编辑器.操作.重命名 |
| 替换为下一个值 | Ctrl+Shift+。 | editor . action . inplace replace . down |
| 用以前的值替换 | Ctrl+Shift+, | editor . action . inplace replace . up |
| 展开 AST 选择 | shift+Alt+右移 | editor . action . smart select . expand |
| 收缩 AST 选择 | shift+Alt+向左 | editor . action . smart select . shrink |
| 修剪尾部空白 | Ctrl+K Ctrl+X | editor . action . trimtrailinghhitespace |
| 更改语言模式 | Ctrl+K M | work bench . action . editor . changeloangemode |

表 1-4

航行

|

命令

|

钥匙

|

命令 id

|
| — | — | — |
| 显示所有符号 | Ctrl+T | work bench . action . showall symbols |
| 转到线… | Ctrl+G | workbench.action.gotoLine |
| 转到文件…,快开 | Ctrl+P | workbench 动作 quickOpen |
| 转到符号… | Ctrl+Shift+O | workbench.action.gotoSymbol |
| 显示问题 | Ctrl+Shift+M | 工作台.操作.视图.问题 |
| 转到下一个错误或警告 | F8 | editor . action . marker . nextinfiles |
| 转到上一个错误或警告 | Shift+F8 | editor . action . marker . pre file |
| 显示所有命令 | Ctrl+Shift+P 或 F1 | work bench . action . show 命令 |
| 导航编辑器历史 | Ctrl+Tab | work bench . action . quickopenpreviousededitingroup |
| 回去 | alt+向左 | 工作台.操作.向后导航 |
| 快速输入返回 | alt+向左 | work bench . action . quick input back |
| 前进 | 好 | 工作台.操作.向前导航 |

表 1-5

编辑器/窗口管理

|

命令

|

钥匙

|

命令 id

|
| — | — | — |
| 新窗口 | Ctrl+Shift+N | 工作台.操作.新窗口 |
| 关闭窗口 | Ctrl+W 组合键 | 工作台.操作.关闭窗口 |
| 关闭编辑器 | Ctrl+F4 | work bench . action . close active editor-work bench .动作.关闭作用中编辑器 |
| 关闭文件夹 | Ctrl+K F | 工作台.操作.关闭文件夹 |
| 在编辑器组之间循环 | 未赋值的 | work bench . action . navigateeditorgroups |
| plist 编辑器 | Ctrl+\ | 工作台.操作. splitEditor |
| 聚焦到第一个编辑组 | Ctrl+1 | work bench . action . focusfirsteditorgroup |
| 聚焦到第二个编辑组 | Ctrl+2 | work bench . action . focussecondeditorgroup |
| 聚焦到第三编辑组 | Ctrl+3 | work bench . action . focusthirdeditorgroup |
| 聚焦到左边的编辑组 | 未赋值的 | work bench . action . focuspreviousgroup |
| 聚焦到右边的编辑组 | 未赋值的 | work bench . action . focus next group |
| 向左移动编辑器 | Ctrl+Shift+PageUp | workbench 动作 moveeditorleftingroup |
| 向右移动编辑器 | Ctrl+Shift+PageDown | workbench 动作 moveEditorRightInGroup |
| 向左移动活动编辑器组 | Ctrl+K 向左 | work bench . action . moveactiveeditgroupleft |
| 向右移动活动编辑器组 | Ctrl+K 向右 | work bench . action . moveactiveeditorgroup right |
| 将编辑器移到下一组 | ctrl+Alt+右键 | work bench . action . moveeditortonextgroup |
| 将编辑器移到上一组 | ctrl+Alt+左键 | work bench . action . moveedittopreviewougroup |

表 1-6

文件管理

|

命令

|

钥匙

|

命令 id

|
| — | — | — |
| 新文件 | Ctrl+N | work bench . action . files . newuntitled file |
| 开文件… | Ctrl+O | work bench . action . files . openfile |
| 救援 | Ctrl+S | 工作台.操作.文件.保存 |
| 全部保存 | Ctrl+K S | saveAll(保存全部) |
| 另存为… | Ctrl+Shift+S | 工作台.操作.文件.另存为 |
| 关闭 | Ctrl+F4 | work bench . action . close active editor-work bench .动作.关闭作用中编辑器 |
| 关闭其他 | 未赋值的 | 工作台.动作.收尾编辑器 |
| 封闭组 | Ctrl+K W 组合键 | work bench . action . closeeditorsingroup |
| 关闭其他组 | 未赋值的 | work bench . action . closeeditorsinothergroups |
| 向左关闭群组 | 未赋值的 | work bench . action . closeeditorstotheleft |
| 向右关闭群组 | 未赋值的 | work bench . action . closed store right-维护作业 |
| 全部关闭 | Ctrl+K Ctrl+W | work bench . action . closealleditors |
| 重新打开关闭的编辑器 | Ctrl+Shift+T | work bench . action . reopenclosededitor |
| 保持开放 | Ctrl+K Enter | 工作台.操作. keepEditor |
| 复制活动文件的路径 | Ctrl+K P | work bench . action . files . copypathfactory 文件 |
| 在窗口中显示活动文件 | Ctrl+K R 组合键 | work bench . action . files . revealactivefileinwindows |
| 在新窗口中显示打开的文件 | Ctrl+K | work bench . action . files . showopenedfileinnewwindow |
| 将打开的文件与 | 未赋值的 | work bench . files . action . comparefilewith |

表 1-7

显示

|

命令

|

钥匙

|

命令 id

|
| — | — | — |
| 切换全屏 | F11 | work bench . action . toggle full screen |
| 切换 Zen 模式 | Ctrl+K Z 组合键 | workbench.action.toggleZenMode |
| 离开禅模式 | 逃跑 | 工作台。操作。请求模型 |
| 放大 | Ctrl+= | 工作台.动作. zoomIn |
| 缩小 | Ctrl± | workbench.action.zoomOut |
| 重置缩放 | Ctrl+Numpad0 | workbench.action.zoomReset |
| 切换侧边栏可见性 | Ctrl+B | work bench . action . togglesidebarvisibility |
| 显示浏览器/切换焦点 | Ctrl+Shift+E | workbench.view.explorer |
| 显示搜索 | Ctrl+Shift+F | 工作台.视图.搜索 |
| 显示源代码管理 | Ctrl+Shift+G | 工作台.视图. scm |
| 显示运行 | Ctrl+Shift+D | 工作台.视图.调试 |
| 显示扩展 | Ctrl+Shift+X | 工作台.视图.扩展 |
| 显示输出 | Ctrl+Shift+U | 工作台.操作.输出. toggleOutput |
| 快速打开视图 | Ctrl+Q | workbench.action.quickOpenView |
| 打开新命令提示符 | Ctrl+Shift+C | work bench . action . terminal . opennativeconsole |
| 切换降价预览 | Ctrl+Shift+V | markdown.showPreview |
| 在侧面打开预览 | Ctrl+K V | markdown.showPreviewToSide |
| 切换集成终端 | Ctrl+`键 | 工作台.操作.终端. toggle 终端 |

表 1-8

搜索

|

命令

|

钥匙

|

命令 id

|
| — | — | — |
| 显示搜索 | Ctrl+Shift+F | 工作台.视图.搜索 |
| 在文件中替换 | Ctrl+Shift+H | work bench . action . replace infiles |
| 切换匹配大小写 | Alt+C | toggleSearchCaseSensitive |
| 切换全字匹配 | Alt+W | toggleSearchWholeWord |
| 切换使用正则表达式 | Alt+R | toggleSearchRegex |
| 切换搜索详细信息 | Ctrl+Shift+J | work bench . action . search . togglequerydetails |
| 聚焦下一个搜索结果 | 法乐四联症 | search . action . focusextsearchresult |
| 聚焦上一个搜索结果 | Shift+F4 | search . action . focusprevioussearchresult |
| 显示下一个搜索词 | 向下 | history.showNext |
| 显示上一个搜索词 | 起来 | history . show 上一个 |

表 1-9

搜索编辑器

|

命令

|

钥匙

|

命令 id

|
| — | — | — |
| 在编辑器中打开结果 | Alt+Enter | search.action.openInEditor |
| 焦点搜索编辑器输入 | 逃跑 | search . action . focusqueryeditorwidget |
| 再次搜索 | Ctrl+Shift+R | rerunSearchEditorSearch |
| 删除文件结果 | ctrl+Shift+退格键 | search . search editor . action . delete file results |

表 1-10

偏好;喜好;优先;参数选择

|

命令

|

钥匙

|

命令 id

|
| — | — | — |
| 打开设置 | Ctrl+, | 工作台.操作. openSettings |
| 打开工作区设置 | 未赋值的 | work bench . action . openworkspacesettings |
| 打开键盘快捷键 | Ctrl+K Ctrl+S | work bench . action . openglobalkey bindings |
| 打开用户片段 | 未赋值的 | work bench . action . open snippet |
| 选择颜色主题 | Ctrl+K Ctrl+T | work bench . action . select 主题 |
| 配置显示语言 | 未赋值的 | work bench . action . configure locale |

表 1-11

调试

|

命令

|

钥匙

|

命令 id

|
| — | — | — |
| 切换断点 | F9 | editor . debug . action . toggle 断点 |
| 开始 | F5 | 工作台.操作.调试.启动 |
| 继续 | F5 | 工作台.操作.调试.继续 |
| 启动(不调试) | Ctrl+F5 | 工作台.操作.调试.运行 |
| 中止 | F6 | 工作台.操作.调试.暂停 |
| 进入 | F11 | work bench . action . debug . stepinto |

表 1-12

任务

|

命令

|   |

钥匙

|

命令 id

|
| — | — | — | — |
| 运行生成任务 |   | Ctrl+Shift+B | 工作台.操作.任务.构建 |
| 运行测试任务 |   | 未赋值的 | 工作台.操作.任务.测试 |

表 1-13

扩展ˌ扩张

|

命令

|

钥匙

|

命令 id

|
| — | — | — |
| 安装扩展 | 未赋值的 | 工作台.扩展.操作.安装扩展 |
| 显示已安装的扩展 | 未赋值的 | work bench . extensions . action . showinstalledextensions |
| 显示过时的扩展名 | 未赋值的 | work bench . extensions . action . listoutdatedextensions |
| 显示推荐的扩展 | 未赋值的 | work bench . extensions . action . show 推荐扩展 |
| 显示常用扩展 | 未赋值的 | work bench . extensions . action . show popular extensions |
| 更新所有扩展 | 未赋值的 | work bench . extensions . action . updateall extensions |

支持的编程语言

在 VS 代码中,几乎每一种主流编程语言都有一个支持工具。具有丰富语言扩展的 JavaScript、TypeScript、CSS 和 HTML 的大多数默认设置都可以在 VS 代码市场中找到。以下是八种最流行的语言扩展:

  • 计算机编程语言

  • C/C++

  • C#

  • Java 扩展包

  • PHP 扩展包

  • 红宝石

您可以去市场或查看 integrated Extensions 视图,并搜索您想要的编程语言,以找到代码片段、代码完成和智能感知提供程序、linters、调试器等。如果您想要更改 VS 代码的显示语言(例如,更改为其他可用的语言),您可以在显示语言主题中完成。

最好事先对这些编程语言和 VS 代码支持的特定于语言的文档有所了解。

VS 代码中的语言特性

不同语言及其扩展的支持特性各不相同:

  • 语法突出显示和括号匹配

  • 智能完成

  • 林挺和更正

  • 代码导航(转到定义,查找所有引用)

  • 排除故障

  • 重构

更改所选文件的语言

在 VS 代码中,有一个基于文件扩展名的默认语言支持设置。然而,当您需要更改一些语言模式时,您可以通过单击状态栏右侧的语言指示器来实现。这将调用选择语言模式下拉菜单,您可以看到并选择另一种语言的当前文件。

附加组件和工具

根据设计,VS 代码非常少,并且只包含有限数量的跨大多数开发平台共享的组件。包括编辑器、文件管理、窗口管理和首选项设置等基本功能。JavaScript 和 TypeScript 语言服务以及 Node.js 调试器也是基本结构的一部分。

如果您习惯于使用更大、更具包容性和多样化的开发工具,您可能会惊讶地发现,您的场景并不总是开箱即用。例如,没有预装项目模板的“文件➤新建项目”对话框。大多数 VS 代码用户将被要求寻找和下载额外的组件,这取决于他们的特定项目。

常用组件

以下是一些常见的安装组件:

  • Git: VS 代码内置支持使用 Git 的源代码控制,但需要 Git 安装在侧边。

  • Node.js(包含 npm): 主要用于构建和运行 JavaScript 应用的跨平台。

  • **TypeScript:**TypeScript 编译器 tsc,用于将 TypeScript 转录为 JavaScript。

VS 代码扩展

还可以通过扩展来扩展 VS 代码编辑器本身。VS 代码社区已经在 VS 代码市场上为以下编程语言构建了多种有用的扩展:

  • 计算机编程语言

  • C/C++

  • 朱皮特

  • 斯洛文尼亚语

  • 更漂亮:代码格式化程序

  • 实时服务器

  • Visual Studio 智能代码

  • C#

附加工具

VS 代码有效地集成了一些广泛使用的工具链。以下工具将有助于提升您的开发体验:

  • Yeoman: 一个应用搭建工具,File ➤新项目的命令行版本。

  • generator-aspnet: 一个用于运行 aspnet 核心应用程序的约曼生成器。

  • **发电机-热毛巾:**约曼发电机,用于轻松创建 AngularJS 应用程序。

  • Express: 使用 Pug 模板引擎的 Node.js 应用的应用框架。

  • Gulp: 一个流任务运行器系统,可以与 VS 代码任务合并。

  • Mocha: 运行在 Node.js 上的 JavaScript 测试框架。

  • Yarn: 一个依赖管理器,也是 npm 的一个很好的替代品。

请注意,这些工具中的大多数都需要下载和应用 Node.js 和 npm 包管理器。

设置优先级

不同的设置范围可以在多个级别覆盖配置:

  • **用户设置:**全局适用于所有 VS 代码实例。

  • **工作区设置:**转到打开的文件夹或工作区,通常覆盖用户设置。

  • **工作区文件夹设置:**通常适用于多根工作区的特定文件夹;覆盖用户和工作空间设置。

设定值可以有多种类型:

  • 字符串:" files . auto save “:” after delay "

  • Boolean:" editor . minimap . enabled ":true

  • 编号:“files . auto save delay”:1000

  • 数组: “editor.rulers”: []

  • Object:" search . exclude “:{ * */node _ modules “:true,” **/bower_components”: true }

具有基元类型和数组类型的值将被覆盖,但具有对象类型的值将被合并。例如,workbench.colorCustomizations 接受一个指定一组用户界面项目及其所需颜色的对象。如果有冲突的值,通常的反应是用优先于用户值的工作空间值来覆盖行为。

设置和安全性

一些设置允许你指定一个可执行文件,VS 代码将运行该文件来执行某些操作。例如,您可以选择集成终端将使用的 shell。对于更高级的安全性,此类设置只能在用户设置中确定,而不能在工作区范围内确定。查看工作区设置中不支持的设置列表:

  • git.path

  • 终端.外部. windowsExec

  • terminal.external.osxExec

  • 终端.外部. linuxExec

第一次激活决定这些设置的工作空间时,VS 代码会警告你一次,之后你可以忽略这些值。

摘要

在这一章中,我们已经讲述了与 VS 代码相关的基础知识,包括它的用户界面和键盘快捷键。

在下一章中,我们将更仔细地研究 Python 开发的 VS 代码,包括所需扩展的列表、林挺和调试需求。

Visual Studio Code,《Markdown and Visual Studio Code》, https://code.visualstudio.com/docs/languages/markdown ,2021 年 7 月 29 日访问。

2

VSC,“用户和工作区设置”, https://code.visualstudio.com/docs/getstarted/settings ,2021 年 7 月 29 日访问。

3

VSC,“用户和工作区设置”

4

VSC,“用户界面”, https://code.visualstudio.com/docs/getstarted/userinterface ,2021 年 7 月 29 日访问。

5

VSC,“设置 VSC”, https://code.visualstudio.com/docs/setup/setup-overview ,2021 年 7 月 29 日访问。

6

VSC,“VSC 的键绑定”, https://code.visualstudio.com/docs/getstarted/keybindings ,2021 年 7 月 29 日访问。

7

VSC,“VSC 的键绑定”

8

VSC,“VSC 的键绑定”

9

VSC,“When 子句上下文”, https://code.visualstudio.com/api/references/when-clause-contexts ,VS 代码,web,2021 年 7 月 29 日访问。

二、VSC 中的 Python 程序入门

在前一章中,我们介绍了 VS 代码的基础知识。在这一章中,我们将解释如何为 Python 开发设置 VS 代码。它可以很容易地下载并安装在所有主要的操作系统上,如 Windows、Linux 和 macOS。

安装基础

首先,让我们介绍一下安装基础知识。

为了举例说明,我们将展示如何在 Windows 上安装大多数工具。Windows 将用作设置 Python 环境的开发环境。对于 Linux 和 macOS,过程会差不多;尽管如此,这些命令还是有一些不同。

你所要做的就是导航到 https://code.visualstudio.com/download ,选择合适的平台安装软件。下载完成后,继续正常安装。

一旦 VS 代码启动并运行,接下来要做的就是设置 Python 运行时环境。同样,您可以在所有三种操作系统(Windows、Linux 和 macOS)上安装 Python。下载并安装 Python 后,您可以进入命令提示符并运行以下命令来验证安装是否成功。要验证是否已在计算机上成功安装 Python,请激活以下命令之一(取决于您的操作系统):

  • Linux 和 macOS: 打开终端窗口,键入以下命令:

  • Windows: 打开命令提示符并运行以下命令:

python3 --version

py -3 --version

如果安装成功,输出窗口应该能够显示您安装的 Python 版本。

接下来,我们将学习为 VS 代码安装扩展。

检查所需的扩展

默认情况下,VS 代码的操作就像普通的文本编辑器一样,并且没有对 Python 的任何内置支持。这意味着,即使您可以轻松地用 VS 代码编写 Python 代码,您也无法升级和使用一些使编写代码变得更加容易的开发工具或技术。VS 代码通过一个记录良好的扩展模型支持多种编程语言的开发。Python 扩展支持用 VS 代码进行 Python 开发,具有以下特性:

  • 支持 Python 3.4 和更高版本,以及 Python 2.7

  • 使用智能感知完成代码

  • 林挺

  • 调试支持

  • 代码片段

  • 单元测试支持

  • 虚拟环境的自动使用

  • Jupyter 环境和 Jupyter 笔记本中的代码编辑

  • 为 VS 代码安装 Python 扩展

VS 代码扩展也不仅仅涵盖编程语言功能:

  • 键盘映射让已经熟悉 Atom、Sublime Text、Emacs、Vim、PyCharm 或其他环境的用户推进您的编码。

  • 主题可以定制用户界面,无论你喜欢在亮处、暗处还是更鲜艳的地方编码。

  • 语言包让您有更本地化的体验。

  • GitLens 在您的编辑平台中直接提供了大量有用的 Git 特性,包括责备注释和存储库探索特性。

  • 通过从菜单中选择“文件”、“自动保存”,可以很容易地打开自动保存。默认的延迟时间是 1000 毫秒,也是可调的。

  • Settings Sync 提供了使用 GitHub 在不同安装之间同步 VS 代码设置的功能。如果您在不同的机器上工作,这对于保持您的环境在所有机器上的一致性非常有用。

  • docker 让您快速轻松地使用 Docker,帮助创作 Dockerfile 和 docker-compose.yml,设置和部署您的项目,甚至为您的项目生成适当的 Docker 文件。

通过点击活动栏上的扩展图标,可以识别和安装附加的扩展和主题。您可以使用关键字查找扩展,以最喜欢的方式对结果进行排序,并快速轻松地安装扩展。

接下来的章节简要介绍了 VS 代码中 Python 的八大扩展,在活动栏的扩展项中输入 Python 即可看到。开发人员喜欢使用更多的扩展,但是这里我们想把重点放在只适用于 Python 的扩展上。

tabline(表格线)

Tabnine 是一个扩展,它基于一个存储了数百万开源代码行的模型提供代码完成建议,然后将这些代码行提供给您当前正在处理的代码。Tabnine 从您当前编辑的文件中发送最少的上下文数据片段,允许我们根据您当前的项目目标进行预测。该扩展不使用您的代码来训练核心模型,并且发送到服务器的信息仅用于计算您的预测,不会被保存用于任何进一步的应用。

此外,Tabnine 被视为一个强大的人工智能(AI)助手,旨在帮助您更快地编码,防止任何错误,并习惯于最佳编码实践,而不必离开 VS 代码的舒适环境。Tabnine 研究公共共享的代码,并使用基于人工智能的学习算法,使它能够看到你的下一个编码请求,并建议一键完成代码。Tabnine 可与所有主流编程语言兼容,包括 JavaScript、Python、TypeScript、PHP、C/C++、HTML/CSS、Go、Java、Ruby、C#、Rust、SQL、Bash、Kotlin、Julia、Lua、OCaml、Perl、Haskell 和 React。

括号对着色机

这个扩展允许匹配的括号被发现或用颜色分类。这样,用户可以确定匹配哪些字符,使用哪些颜色。下面是几个基本设置: 1

  • **" bracketpaircolorizer . time out "😗*配置编辑器在更新文档之前应该空闲多长时间;置 0 禁用。

  • **" bracketpaircolorizer . forceuniqueopeningcolor "😗*禁用。

  • **" bracketpaircolorizer . forceiterationcolorcycle "😗*已启用。

  • **" bracketpaircolorizer . colormode "😗*连续的括号共享所有括号类型的颜色池。

独立的括号允许每种括号类型使用自己的颜色池:

  • **" bracketpaircolorizer . highlight activescope "😗*突出显示当前作用域的括号。

  • **" bracketpaircolorizer . activescopecss "😗*选择边框样式突出显示活动范围;使用{color}来匹配现有的括号颜色。如果使用此功能,建议禁用内置的 editor.matchBrackets 设置。添加值“backgroundColor : {color}”以增加可见性。

  • **" bracketpaircolorizer . showbracketsinglets "😗*在装订线中显示活动范围括号。

  • **" bracketpaircolorizer . showbracketsintruler "😗*显示标尺中的活动范围括号。

  • **" bracketpaircolorizer . ruler position "😗*标尺中的装饰位置。

  • **" bracketpaircolorizer . showverticalscopeline "😗*在括号之间显示一条垂直线。

  • **" bracketpaircolorizer . showhorizontalscopeline "😗*在括号之间显示一条水平线;默认启用

  • **" bracketpaircolorizer . scopelinerelativeposition "😗*禁用在第 0 列显示垂直线。

  • **" bracketpaircolorizer . scopelinecss "😗*选择边框样式以突出显示活动范围;使用{color}来匹配现有的括号颜色。

  • **" bracketpaircolorizer . consecutivepaircolors "😗*新的括号对可以通过添加到数组中来配置。注意:对必须是 Prism.js 支持的标点符号类型。

  • **" bracketpaircolorizer . independentpaircolors "😗*新的括号对可以通过添加到数组中来配置。注意:对必须是 Prism.js 支持的标点符号类型

  • **" bracketpaircolorizer . excluded languages "😗*排除此扩展解析的语言。

Python 片段

市场中有一个代码片段集,可以让你更有效地使用 Python。默认情况下,标准代码片段包包含以下所有 Python 方法:

  • 所有 Python 内置代码片段,并且包含每个方法的至少一个示例

  • 所有 Python 字符串片段至少包含每个方法的一个示例

  • 所有 Python 列表片段至少包含每个方法的一个示例

  • 所有 Python 集合片段都包含每个方法的至少一个示例

  • 所有 Python 元组片段都包含每个方法的至少一个示例

  • 所有 Python 字典片段至少包含每个方法的一个示例

此外,该集合还包含许多其他代码片段,如 if/else、for、while、while/else、try/catch、文件进程、类片段等, 2 如表 2-1 所示。

表 2-1

其他代码片段

|

片段

|

描述

|
| — | — |
| 丙烯腈-丁二烯-苯乙烯 | 返回一个数字的绝对值 |
| 全部 | 如果 iterable 对象中的所有项目都为 true,则返回 True |
| 任何的 | 如果 iterable 对象中的任何一项为 true,则返回 True |
| 美国信息交换标准代码 | 返回对象的可读版本。用转义字符替换非 ASCII 字符 |
| 容器 | 返回数字的二进制版本 |
| 弯曲件 | 返回指定对象的布尔值 |
| 字节数组 | 返回字节数组 |
| 字节 | 返回一个 bytes 对象 |
| 请求即付的 | 如果指定的对象是可调用的,则返回 True,否则返回 False |
| 儿童健康研究(Child Health Research 的缩写) | 从指定的 Unicode 代码中返回一个字符。 |
| 德拉特尔 | 从指定的对象中删除指定的特性(属性或方法) |
| 词典 | 返回一个字典(数组) |
| 目录 | 返回指定对象的属性和方法的列表 |
| 时尚潮流 | 返回参数 1 除以参数 2 所得的商和余数 |
| 列举 | 获取集合(例如,元组)并将其作为枚举对象返回 |
| evaluate 评价 | 计算并执行表达式 |
| 高级管理人员 | 执行指定的代码(或对象) |
| 过滤器 | 使用筛选函数排除可迭代对象中的项目 |
| 漂浮物 | 返回浮点数 |
| 冻结集合 | 返回一个 frozenset 对象 |
| getattr | 返回指定属性(属性或方法)的值 |
| 全球 | 将当前全局符号表作为字典返回 |
| 哈萨特 | 如果指定的对象具有指定的属性(属性/方法),则返回 True |
| 混杂 | 返回指定对象的哈希值 |
| 帮助 | 执行内置帮助系统 |
| 十六进制 | 将数字转换为十六进制值 |
| (同 Internationalorganizations)国际组织 | 返回一个整数 |
| 编号 | 返回对象的 id |
| 投入 | 允许用户输入 |
| 情况如何 | 如果指定对象是指定对象的实例,则返回 True |
| 判断类是否为某类的子类 | 如果指定的类是指定对象的子类,则返回 True |
| 国际热核聚变实验堆 | 返回迭代器对象 |
| 低输入联网(low-entry networking 的缩写) | 返回对象的长度 |
| 当地人 | 返回当前局部符号表的更新字典 |
| 地图 | 返回应用于每一项的指定函数的指定迭代器 |
| 最大 | 返回 iterable 中最大的项 |
| 内存视图 | 返回一个内存视图对象 |
| 部 | 返回 iterable 中最小的项 |
| 然后 | 返回 iterable 中的下一项 |
| 目标 | 返回一个新对象 |
| 十月 | 将数字转换成八进制 |
| 打开 | 打开一个文件并返回一个 file 对象 |
| 订单 | 给定长度为 1 的字符串,当参数是 Unicode 对象时,返回表示字符的 Unicode 码位的整数,当参数是 8 位字符串时,返回字节的值。 |
| 啪 | 将 x 返回到 y 的幂 |
| 打印 | 打印到标准输出设备 |
| 财产 | 获取、设置、删除属性 |
| 范围 | 返回一个数字序列,从 0 开始,按 1 递增(默认情况下) |
| 继承人 | 返回对象的可读版本 |
| 颠倒的 | 返回一个反向迭代器 |
| 圆形物 | 舍入数字 |
| 薄片 | 返回一个切片对象 |
| 分类的 | 返回一个排序列表 |
| 静态方法 | 将方法转换为静态方法 |
| 潜艇用热中子反应堆(submarine thermal reactor 的缩写) | 返回一个字符串对象 |
| 总额 | 对迭代器的项求和 |
| 极好的 | 返回代理对象,该对象将方法调用委托给类型的父类或同级类。 |
| 类型 | 返回对象的类型 |
| unichr | 返回一个字符的 Unicode 字符串,该字符的 Unicode 代码是整数 I。 |
| 变动 | 返回对象的 dict 属性 |
| 活力 | 从两个或多个迭代器中返回一个迭代器 |

VSC 的 Python 测试资源管理器

这个扩展为您提供了一个选项,让您可以使用测试资源管理器 UI 运行 Python 单元测试或 Pytest 测试。此外,该扩展允许您在 VS 代码的侧栏中操作 Python 测试。有一些关键特性使得它在开发人员中非常受欢迎:

  • 在 VS 代码侧边栏的测试视图中显示一个测试资源管理器,其中包含所有注意到的测试和套件及其状态。

  • 测试期间方便的错误报告功能。

  • Unittest 和 Pytest 调试。

  • 当在资源管理器中选择测试时,通知失败测试的日志。

  • 支持多根工作区。

  • 支持 Unittest 和 Pytest 测试框架及其插件。

  • 与 Python 扩展的测试视图的比较。

  • 在发现阶段更好的错误报告。如果有错误,您将看到这样的测试处于出错状态,单击它们,完整的错误消息将显示在输出面板中。Python 扩展最多不会显示包含语法错误或无效数据等错误的测试。

  • 倾向于与诸如 Tavern 之类的 pytest 插件一起工作得更好。Python 扩展不会识别这些测试。

  • 基于测试资源管理器用户界面。当您有一个包含不同语言或框架的项目的工作空间时,这个事实可能特别方便。测试资源管理器用户界面有很多插件,您可以方便地在同一个视图中发现和运行测试。

  • 通过单击失败的测试,显示您的错误和测试的完整报告。

  • 在平台显示屏上仅显示您工作区中的相关文件夹。当您有多个工作空间文件夹时,显示所有工作空间文件夹(就像 Python 扩展所做的那样)可能会有一点问题,但是其中只有几个有任何测试。

用户对这两种扩展的体验是非常主观的。但是,您可能更喜欢这个扩展的用户界面。另外,当您的工作区中有多个文件夹时,每个发现、测试执行和测试取消都不需要您选择一个文件夹。

默认情况下,扩展配置使用 VS 代码的 Python 扩展中的配置。要为您的项目修改 Python,请参见 VS 代码中的 Python 入门。然而,这个扩展应用的测试框架可以被 python test explorer . test framework 配置属性覆盖。两个可用选项是 unittest 和 pytest。当属性设置为 null 时,将使用 Python 扩展模块中的配置。

在配置 Python 测试发现和执行时,确保您熟悉表 2-2 中显示的当前使用的属性列表。??

表 2-2

Python 开发的 VS 代码中使用的属性

|

财产

|

描述

|
| — | — |
| python.pythonPath | Python 的路径。 |
| python.envFile | 环境变量定义文件的路径。 |
| python.testing.cwd | 单元测试的可选工作目录。 |
| python.testing.unittestEnabled | 是否使用 unittest 启用或禁用单元测试(启用或禁用测试资源管理器的测试发现)。 |
| python.testing.unittestArgs | 用于测试发现的参数(目前只考虑-s 和-p 参数)。 |
| python.testing.pyTestEnabled | 是否使用 pytest 启用或禁用单元测试(启用或禁用测试资源管理器的测试发现)。 |
| python.testing.pytestPath | pytest 可执行文件或 pytest 兼容模块的路径。 |
| python . testing . pytestargs-python .测试. pytest rgs | 传递给 pytest 的参数。每个参数都是数组中的一个单独的项。 |
| python . testing . autotestdiscosveronsavenabled | 当保存文本文件时,真测试将被自动重新发现。 |
| python 测试器。测试框架工作 | 要使用的测试框架(覆盖 Python 扩展属性 python.testing.unittestEnabled 和 python.testing.pyTestEnabled)。 |

表 2-2 中的配置支持 w o r k s p a c e F o l d e r 形式的工作空间文件夹占位符和 {workspaceFolder}形式的工作空间文件夹占位符和 workspaceFolder形式的工作空间文件夹占位符和 { env:YOUR _ ENVIRONMENT _ VARIABLE }形式的环境变量。

如果您正在配置测试浏览器用户界面,请使用表 2-3 中列出的 g 配置属性。 4

表 2-3

配置属性

|

财产

|

描述

|
| — | — |
| testExplorer.onStart | 每当测试运行开始时,停用或重置所有测试状态 |
| testExplorer.onReload | 每当重新加载测试树时,停用或重置所有测试状态 |
| 探测器代码镜头 | 在每个测试或套件上方显示一个 CodeLens,用于运行或调试测试 |
| testExplorer.gutterDecoration | 使用装订线装饰在编辑器中显示每个测试的状态 |
| test explorer . error 装饰 | 在编辑器中将测试失败的错误消息显示为装饰 |
| test explorer . errordecorationhover | 为编辑器中的错误装饰提供悬停消息 |
| testExplorer.sort | 按标签或位置对测试和套件进行排序。如果没有设置(或设置为 null),它们将按照从适配器接收的顺序显示 |
| test explorer . showcollapsebutton | 显示用于折叠测试树节点的按钮 |
| testExplorer.showExpandButton | 显示一个按钮,用于递归地展开测试树的顶层节点,达到给定的级别数 |
| testExplorer.showOnRun | 每当测试运行开始时,切换到测试资源管理器视图 |
| testexplorer . addtoeditorcontextmenu | 将用于运行和调试当前文件中的测试的菜单项添加到编辑器上下文菜单中 |
| testExplorer.mergeSuites | 合并具有相同标签和父项的套件 |
| testExplorer.hideEmptyLog | 当用户点击日志为空的测试时,隐藏用于显示测试日志的输出通道 |
| testExplorer.hideWhen | 当未注册任何测试适配器或已注册的适配器未找到任何测试时,隐藏测试资源管理器。默认情况下,永远不要隐藏测试资源管理器,有一些测试适配器只能使用这个默认设置。 |

配置调试

该扩展通常在 launch.json 中搜索带有“type”:“python”和“request”:“test”的配置,以便在调试期间加载以下任何项目:

  • 名字

  • 安慰

  • 包封/包围(动词 envelop 的简写)

  • 组件部分

  • showReturnValue

  • iredirectoutput

  • debugStdLib

  • justMyCode

  • 子过程

  • 发送文件

更好的评论

更好的注释扩展可以帮助您在代码中创建更加用户友好的、信息丰富的注释。扩展还可以帮助您将注释分类为提醒、查询、待办事项和项目亮点。注释掉的代码也可以用你喜欢的任何方式进行样式化,以清楚地表明代码的目标是什么,你喜欢的任何其他注释样式都可以在设置中进行调整。该扩展也可以在用户设置或工作区设置中按以下方式配置: 5

  • **" better-comments . multilinecomments "😗*true

此设置将控制是否使用注释标记设置多行注释的样式。如果为 false,多行注释将不带修饰显示。

  • **" better-comments . highlight plaintext "😗*false

此设置将控制纯文本文件中的注释是否使用注释标签来设置样式。为真时,标签(默认值:!* ?//)是一行的第一个字符。

  • better-comments.tags:

标签是用于标记注释以进行修饰的字符或序列。默认的 5 可以修改,以改变颜色,并可以添加更多。

扩展支持的语言列表令人印象深刻,包括以下语言:Ada、AL、Apex、AsciiDoc、BrightScript、C、C#、C++、ColdFusion、Clojure、COBOL、CoffeeScript、CSS、Dart、Dockerfile、Elixir、Elm、Erlang、F#、Fortran、gdscript、GenStat、Go、GraphQL、Groovy、Haskell、Haxe、HiveQL、HTML、Java、JavaScript、JavaScript React、JSON with comments、Julia、Kotlin、LaTexBibtex/Biblatex)、Less、Lisp、Lua、Makefile、Markdown、Nim、MATLAB、Objective-C、Objective-C++、Pascal、Perl、Perl 6、PHP、Pig、PlantUML、PL/SQL、PowerShell、Puppet、Python、R、rack、Ruby、Rust、SAS、Sass、Scala、SCSS、ShaderLab、ShellScript、SQL、STATA、Stylus、Swift、Tcl、Terraform、Twig、TypeScript、TypeScript React、Verilog、Visual Basic、Vue

AutoDocstring

这个 VS 代码扩展使用户能够快速生成 Python 函数的文档字符串。它有一些非常有用的功能,包括:

  • 生成可通过制表符分隔的 docstring 代码段。

  • 开发人员可以在几种不同类型的 docstring 格式之间进行选择。

  • 通过 pep484 类型提示、默认值和变量名称推断参数类型。

  • 该扩展支持 args、kwargs、decorators、errors 和参数类型。

默认情况下,autoDocstring 支持以下 Docstring 格式:

  • 谷歌

  • docBlockr

  • 数组

  • 狮身人面像

  • PEP0257

使用扩展时,建议遵循一些标准应用程序规则:

  • 将光标放在定义正下方的行上,以生成完整的自动填充的文档字符串

  • 确保在用三重引号(“‘或’ '”)打开 docstring 后按 enter 键

  • 键盘快捷键:对于 mac,ctrl+shift+2 或 cmd+shift+2

  • 可以在首选项中更改➤键盘快捷键➤扩展. generateDocstring

  • 命令:生成文档字符串

  • 右键菜单:生成文档字符串

该扩展提供了以下设置: 6

  • **autoDocstring . docstring format:**在不同的 docstring 格式之间切换

  • **autoDocstring . customtemplatepath:**自定义 docstring 模板的路径(绝对或相对于项目根)

  • **autoDocstring . generatedocstringonenter:**打开 docstring 后按回车键生成 docstring

  • **autoDocstring . includeextendedsummary:**在 docstring 中包含扩展摘要部分

  • **autoDocstring . Include name:**在 docstring 的开头包含函数名

  • **autodocstring . startonnewline:**摘要占位符前的换行符

  • **autodocstring . guesstypes:**从类型提示、默认值和变量名推断类型

  • **autodocstring . quotes style:**文档字符串的引号样式

借助 mustache.js 模板引擎,该扩展还支持定制模板。为了使用自定义模板,您需要创建一个. mustache 文件,并使用 customTemplatePath 配置指定其路径。你可以看看下面这些可以在自定义模板中使用的标签: 7

{{name}} - name of the function
{{summaryPlaceholder}} - [summary] placeholder
{{extendedSummaryPlaceholder}} - [extended_summary] placeholder

Sections
{{#args}} - iterate over function arguments
    {{var}} - variable name
    {{typePlaceholder}} - [type] or guessed type placeholder
    {{descriptionPlaceholder}} - [description] placeholder
{{/args}}

{{#kwargs}} - iterate over function kwargs
    {{var}} - variable name
    {{typePlaceholder}} - [type] or guessed type placeholder
    {{&default}} - default value (& unescapes the variable)
    {{descriptionPlaceholder}} - [description] placeholder
{{/kwargs}}

{{#exceptions}} - iterate over exceptions
    {{type}} - exception type
    {{descriptionPlaceholder}} - [description] placeholder
{{/exceptions}}

{{#yields}} - iterate over yields
    {{typePlaceholder}} - [type] placeholder
    {{descriptionPlaceholder}} - [description] placeholder
{{/yields}}

{{#returns}} - iterate over returns
    {{typePlaceholder}} - [type] placeholder
    {{descriptionPlaceholder}} - [description] placeholder
{{/returns}}

Additional Sections
{{#argsExist}} - display contents if args exist
{{/argsExist}}

{{#kwargsExist}} - display contents if kwargs exist
{{/kwargsExist}}

{{#parametersExist}} - display contents if args or kwargs exist
{{/parametersExist}}

{{#exceptionsExist}} - display contents if exceptions exist
{{/exceptionsExist}}

{{#yieldsExist}} - display contents if returns exist
{{/yieldsExist}}

{{#returnsExist}} - display contents if returns exist
{{/returnsExist}}
{{#placeholder}} - makes contents a placeholder

Python 缩进

这个扩展有助于快速生成 Python 函数的文档字符串。每当您在 Python 上下文中按下回车键时,该扩展将解析您的 Python 文件,直到您的光标所在的位置,并准确定义下一行(或者在悬挂缩进的情况下是两行)应该缩进多少以及靠近的行应该不缩进多少。

在下一节中,我们将从 VS 代码中的代码编辑开始。

代码编辑入门

VS 代码编辑应该从解释什么是智能感知开始。它是各种代码编辑特性的总称,包括代码完成、参数信息、快速信息和成员列表。IntelliSense 功能也有其他名称,如代码完成、内容帮助和代码提示。

VS 代码智能感知是为 JavaScript、TypeScript、JSON、HTML、CSS 和 SCSS 提供的。VS 代码支持任何编程语言的基于单词的完成,但也可以通过安装语言扩展来配置为具有更广泛的智能感知。

自动完成和智能感知

为当前激活的文件夹中的所有文件以及安装在标准位置的 Python 包提供了自动完成和智能感知功能。在编辑过程中,您可以右键单击不同的标识符来利用几个方便的命令: 8

  • 转到定义(F12)从您的代码转移到定义对象的代码。当您操作库时,此命令非常有用。

  • Peek Definition (Alt+F12)与前一个几乎相同,但是直接在编辑器中显示定义(在编辑器窗口中留出空间以避免弄乱任何代码)。按 Escape 关闭 Peek 窗口或使用右上角的 x。

  • 转到声明跳转到代码中声明变量或其他项的位置。

  • Peek 声明类似,但直接在编辑器中显示声明。同样,您可以使用 Escape 或右上角的 x 来关闭 Peek 窗口。

自定义智能感知行为

若要自定义引擎的行为,您应该检查代码分析设置和自动完成设置。您还可以自定义自动完成和智能感知的一般行为,甚至完全禁用这些调谐功能。IntelliCode 为 Python 中的 IntelliSense 提供了一组人工智能辅助功能,例如基于当前代码上下文推断最相关的自动完成。

若要为安装在其他非标准位置的包启用 IntelliSense,请将这些位置添加到设置文件的 python.autoComplete.extraPaths 集合中(默认集合为空)。例如,如果使用 Flask,您可能已经在-app.yaml 中指定的自定义位置安装了 Google App Engine。在这种情况下,您必须以下列方式指定这些位置:

Windows:

"python.autoComplete.extraPaths": [
    "C:/Program Files (x86)/Google/google_appengine",
    "C:/Program Files (x86)/Google/google_appengine/lib/flask-0.12"]

macOS/Linux:

"python.autoComplete.extraPaths": [
    "~/.local/lib/Google/google_appengine",
    "~/.local/lib/Google/google_appengine/lib/flask-0.12" ]

python . autocomplete . add brackets 设置(默认为 false)还定义了在自动完成函数名时,VS 代码是否自动添加括号(())。例如,当您将添加括号设置为 true 时:

  "python.autoComplete.addBrackets": true,

然后编写 import os 后跟 os.getc,您将获得 os.getcwd 的自动完成。选择该自动完成会将 os.getcwd()添加到您的源代码中,并将光标放在括号内。当设置为 false 时,只有 os.getcwd 被添加到文件中。

解决纷争

如果自动完成和智能感知对于自定义模块不起作用,建议检查以下原因:

  • 如果 Python 解释器的路径不正确,请检查 pythonPath 设置,或者在进行更正后重新启动 VS 代码。

  • 如果自定义模块位于非标准位置或者没有使用 pip 安装,请确保将该位置添加到 python.autoComplete.extraPaths 设置中,并重新启动 VS 代码。

终端中的运行选择/线路(REPL)

Python:Run Selection/Line in Python Terminal 命令(Shift+Enter)是获取所选代码或当前行代码(如果没有选择)并在 Python 终端中运行它的最快方法。对于编辑器中的选择,还可以在快捷菜单上访问 Python 终端中的相同运行选择/行命令。

VS 代码基于选择的第一个非空行自动删除缩进,相应地向左移动所有其他行。在终端/REPL 中运行的源代码是累积的,直到终端的当前实例完成。该命令仅在需要时打开 Python 终端;您也可以通过启动 REPL 命令使用 Python 直接启动交互式 REPL 环境。如果您刚刚开始使用 Python:Run Selection/Line in Python Terminal 命令,VS 代码会在环境准备好之前将文本发送到 REPL,在这种情况下,选择或行不会运行。如果遇到这种情况,请在 REPL 完成加载后重试该命令。

格式化

当对行距、缩进、运算符周围的间距等应用特定的规则和约定时,格式化使代码更加用户友好。同时,它并不真正影响代码本身的功能。相反,林挺分析代码中常见的语法、风格和功能错误,以及可能导致错误的非常规编程实践。尽管格式化和林挺之间有一些重叠,但这两种功能是互补的。

Python 扩展支持使用 autopep8(默认)、black 或 yapf 的源代码格式。

常规格式设置

表 2-4 显示了 VS 代码中 Python 代码的一般格式设置:

表 2-4

常规格式设置

|

设置(python.formatting)

|

缺省值

|

描述

|
| — | — | — |
| 供应者 | " autopep " | 指定要使用的格式化程序,可以是“autopep8”、“yapf”或“black”。 |

表 2-5 中的设置主要适用于单个格式化程序。Python 扩展在当前 pythonPath 中查找格式化程序。为了在另一个位置使用格式化程序,请确保在指定的自定义路径设置中指定该位置。

表 2-5

特定于格式化程序的设置

|

格式程序

|

安装步骤

|

参数设置(python.formatting)

|

自定义路径设置(python.formatting)

|
| — | — | — | — |
| 自动驾驶仪 8 | 管道安装管道 8pip 安装-升级 autopep8 | autopep 8 args | autopep 路径 |
| 黑色(见注释) | pip 安装黑色 | 布莱克 Args | 黑色路径 |
| 耶!耶 | pip 安装 yapf | 雅普法格斯 | yapfPath |

默认情况下,如果 Python 2 环境处于活动状态,则不能安装黑色格式化程序。尝试这样做可能会显示消息“未安装黑色格式化程序。安装?”。如果您尝试安装 black 作为响应,会出现另一条消息,说明“找不到满足 Black 要求的版本。没有为黑色找到匹配的分布。

要解决这个问题并在 Python 2 中使用 Black 格式化程序,首先要在 Python 3 框架中安装 Black。然后将 python.formatting.blackPath 设置设置为该安装位置。使用自定义参数时,命令行上由空格分隔的参数字符串的每个顶级元素必须是 args 列表中的一个单独项。举例说明:

"python.formatting.autopep8Args": ["--max-line-length", "120", "--experimental"],
"python.formatting.yapfArgs": ["--style", "{based_on_style: chromium, indent_width: 20}"],
"python.formatting.blackArgs": ["--line-length", "100"]

格式疑难解答

如果格式化尝试失败,检查表 2-6 中列出的潜在原因。 9

表 2-6

VS 代码格式疑难解答

|

原因

|

解决办法

|
| — | — |
| python 解释器的路径不正确。 | 检查 pythonPath 设置。 |
| 当前环境中没有安装格式化程序。 | 打开命令提示符,导航到 pythonPath 设置中指定的位置,并为格式化程序运行 pip install。 |
| 格式化程序的路径不正确。 | 检查适当的 python.formatting. 路径设置的值。 |
| 格式化程序的自定义参数不正确。 | 检查适当的 python.formatting. 路径设置是否不包含参数,以及 python.formatting. Args 是否包含单个顶级参数元素的列表,如" python . formatting . yap fargs “:[-style “、” {based_on_style: chromium,indent_width: 20}”]。 |

如果出现“Black 不支持格式选择”的警告消息,可能的解决方案是使用以下设置来阻止它“[python]”:{ " editor . formaton paste “:false,” editor . formatonsavemode “:” file " }。

重构

Python 扩展包括三个重构命令:提取变量、提取方法和排序导入。

提取变量

提取特定范围内选定文本的所有相似项,并用变量替换它。这种新方法被命名为 newvariableNNN,其中 NNN 代表一个随机数。它通常由以下对象调用:

  • 上下文菜单:右键单击选择并选择提取变量。

  • 命令面板(Ctrl+Shift+P),然后 Python 重构:提取变量。

  • 为 python . refactorextractavariable 命令分配键盘快捷键。

提取方法

提取当前范围内特定表达式或块的所有相似项,并用方法调用替换它。这种新方法被命名为 newmethodNNN,其中 NNN 代表一个随机数。它通常由以下人员调用:

  • 上下文菜单:右键单击选择并选择提取方法。

  • 命令面板(Ctrl+Shift+P),然后 Python Refactor: Extract 方法。

  • 为 python.refactorExtractMethod 命令分配键盘快捷键。

  • 将代码重构为方法。

排序导入

排序导入应用排序包将来自同一模块的所有特定导入设置到单个导入语句中,并按字母顺序组织导入语句。它通常由以下对象调用:

  • 在编辑器中右键单击并选择 Sort Imports(不需要选择)。

  • 命令面板(Ctrl+Shift+P),然后 Python 重构:排序导入。

  • 为 python.sortImports 命令分配键盘快捷键。

  • 排序导入语句。

要排序的自定义应用程序在 python.sortImports.args 设置中指定,其中每个顶级项目(由命令行上的空格分隔)都是数组中的一个项目:

" python.sortImports.args": [“-rc “,”- atomic”]。为了使用自定义的 isort 脚本,最好使用 python.sortImports.path 设置来设置特定的路径。

林挺

林挺不同于前面提到的格式化方法,因为它分析代码如何运行并跟踪错误,而格式化只能重构代码的结构。林挺指出了你的 Python 源代码中的任何语法和风格问题,这在大多数时候有助于你发现和纠正微妙的编程错误或可能导致错误的过时的编码实践。例如,林挺跟踪未初始化或未确定变量的使用,对未定义函数的请求,丢失括号,甚至更突出的问题,如试图重新定义内置类型或函数。

默认情况下,风格和语法代码检测由语言服务器完成。如果您需要第三方 linter 进行额外的问题检测,您可以通过使用 Python: Select Linter 命令和适当的 Linter 轻松启用它们。您当然可以使用 Python: Enable 林挺函数来启用和禁用所有林挺。

启用棉绒

要打开非默认 PyLint 的 Linter,应该打开命令面板(Ctrl+Shift+P)并选择 Python: Select Linter 命令。该命令将“python . linting .Enabled”:true 添加到您的设置中,其中是所选 linter 的名称。您还可以查看特定的 linter 以获得详细信息,并启用 linter 提示以在您的编程环境中安装所需的包。

如果您使用的是全局环境,而 VS 代码运行效率不高,linter 安装可能会失败。在这种情况下,要么运行 VS 代码提升,要么手动运行 Python 包管理器,在相同环境的提升命令提示符下安装 linter:例如, sudo pip3 install pylint (对于 macOS 和 Linux)或 pip install pylint (对于 Windows)。

禁用林挺

您可以使用 Python: Enable 林挺命令禁用所有 Python 林挺,该命令会显示包含当前林挺状态的下拉列表,并显示打开或关闭 Python 林挺的选项。

运行林挺

要高效运行林挺,您需要:

  • 默认情况下,林挺会在您保存文件时运行。

  • 打开命令面板(Ctrl+Shift+P),然后输入并点击 Python: Run 林挺。

如果您遇到任何问题,它们都会显示在问题面板中,并在代码编辑器中显示为下划线。

林挺设置

本节列出了林挺的一般和特定设置。您可以自由地将任何设置添加到 user settings.json 文件中(通过文件➤首选项➤设置命令 Ctrl+,)。您还可以参考用户和工作区设置,了解如何在所有启用的 linters 上更改林挺行为。您可以在表格 2-7 : 10 中修改以下设置

表 2-7

林挺设置

|

特征

|

设置(python.linting)

|

缺省值

|
| — | — | — |
| 林挺概况 | 使能够 | 真实的 |
| 文件保存时的林挺 | 林顿储蓄 | 真实的 |
| 林挺消息的最大数量 | maxNumberOfProblems | One hundred |
| 排除文件和文件夹模式 | ignorePatterns | [.]。vscode/*。py “,” /站点包/**/。py"] |

您也可以通过单击启用林挺命令,通过 python 轻松更改 python.linting.enabled。但是,当启用 lintOnSave 时,您可能还希望启用 generic files.autoSave 选项(保存/自动保存)。当你编写代码时,这个函数在你的代码中提供常规的林挺反馈。

特定棉绒

表 2-8 列出了可用的 Python linters 及其基本设置。一定要注意,默认情况下只有 Pylint 是启用的。 11

表 2-8

可用的 python 衬里

|

棉绒

|

包名

|

默认状态

|

真/假启用设置(python.linting)

|

参数设置(python.linting)

|

自定义路径设置(python.linting)

|
| — | — | — | — | — | — |
| Pylint (默认) | 皮拉 | 使能够 | pylintEnabled | 皮林塔格斯 | pylintPath |
| 薄片 8 | 薄片 8 | 有缺陷的 | 启用薄片 8 | flake8Args | 薄片 8 路径 |
| mypi | mypi | 有缺陷的 | mypyEnabled | mypyArgs | mypyPath |
| pydocstyle | pydocstyle | 有缺陷的 | pydocstyleEnabled | pydocstyleArgs | pydocstylePath |
| pycodes style(pep 8) | pycodes style | 有缺陷的 | pycodestyleEnabled | pycodestyleArgs | pycodestylePath |
| 探矿者 | 探矿者 | 有缺陷的 | 有前景的 | 探矿者 | 探矿路径 |
| 血浆 | 皮拉玛 | 有缺陷的 | pylamaEnabled | 皮拉马尔格斯 | pylamaPath |
| 强盗 | 土匪 | 有缺陷的 | banditEnabled | banditArgs | banditPath |

要选择不同的 linter,可以通过 Python: Select Linter 命令来完成。您也可以手动编辑您的设置来启用多个棉条。同时,请记住,应用 Select Linter 命令将会覆盖这些编辑。在每个 linter 的适当参数设置中预先确定了自定义参数。命令行上由空格分隔的参数字符串的每个顶级元素都应该是 arguments (args)列表中的一个单独项目。但是,如果顶级元素是由引号或大括号括起来的单个值,即使值本身有空格,它在列表中仍然是单个项目。

通常不需要定制路径,因为 Python 扩展具有基于所应用的 Python 解释器的 linter 路径。要使用不同版本的 linter,请在指定的自定义路径设置中记下其路径。例如,如果您选择的解释器是一个虚拟环境,但是您想要使用一个安装在全局环境中的 linter,那么您必须设置适当的路径设置来指向全局环境的 linter。

派林特

Pylint 消息属于表 2-9 中列出的类型,并标明了到 VS 代码类别的映射。如果要更改映射,可以修改设置。 12

表 2-9

带有 VS 代码类别映射的 Pylint 类别

|

Pylint 类别

|

描述

|

VS 代码类别映射

|

适用设置(python.linting)

|
| — | — | — | — |
| 公约© | 违反编程标准 | 信息(绿色下划线) | pylintcategoryseverity . conventi on |
| 重构® | 糟糕的代码味道 | 提示(灯泡) | pylintcategoryseverity . refactor |
| 警告(W) | Python 特有的问题 | 警告 | pylintCategorySeverity.warning |
| 错误(E) | 可能的代码错误 | 错误(红色下划线) | pylintCategorySeverity.error |
| 致命的 | 进一步处理 pylint 时出现错误 | 错误 | pylintCategorySeverity.fatal |

默认 Pylint 规则

默认情况下,VS 代码中的 Python 被定制为应用与大多数 Python 开发者相关的一组三个主要林挺规则: 13

  • 启用所有错误(E)和致命(F)消息。

  • 禁用所有约定©并重构®消息

  • 禁用所有警告(W)消息,以下消息除外:

    • 不可达(W0101):不可达代码

    • 重复键(W0109):字典中的重复键%r

    • 不必要的分号(W0301):不必要的分号

    • global-variable-not-assigned(w 0602):对%r 使用 global,但没有完成赋值

    • 未使用变量(W0612):未使用变量%r

    • binary-op-exception (W0711):要捕获的异常是二进制“%s”操作的结果

    • 格式字符串错误(W1302):无效的格式字符串

    • 字符串中的异常反斜杠(W1401):字符串中的异常反斜杠

    • 错误的打开模式(W1501): "%s "不是有效的打开模式

这些规则是通过传递给 Pylint 的以下默认参数激活的:

--disable=all, --enable=F, E, unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode

每次 python . linting . pylintuseminimalcheckers 设置为 true 时,都会传递这些项目。但是如果在 pylintArgs 中指定一个值或者使用一个 Pylint 配置文件,那么 pylintUseMinimalCheckers 将总是被设置为 false。

此外,命令行参数可以用来加载 Pylint 插件,比如 Django 的插件:

"python.linting.pylintArgs": ["--load-plugins", "pylint_django"]

其他选项也可以在 pylintrc 或中指定。工作区文件夹中的 pylintrc 选项文件,如 Pylint 命令行参数所述。

林挺故障排除

在表 2-10 中,列出了一些基本错误信息及其可能的解决方案。 14

表 2-10

林挺问题疑难解答

|

出错信息

|

原因

|

解决办法

|
| — | — | — |
| …无法导入<module_name></module_name> | Python 扩展使用了错误版本的 Pylint。 | 确保pythonPath设置指向安装 Pylint 的有效 Python 安装。还可以尝试为正在使用的 Python 解释器将python.linting.pylintPath设置为合适的 Pylint 版本。 |
| 林挺用失败了… | Python 解释器的路径不正确。 | 检查pythonPath设置。 |
|   | linter 尚未安装在当前的 Python 环境中。 | 打开一个命令窗口,在pythonPath设置中导航到 Python 解释器的位置,并为 linter 运行pip install。 |
|   | 到棉绒的路径不正确。 | 确保棉绒的适当python.linting.<linter>Path设置正确。 |
|   | 自定义参数定义不正确。 | 检查适当的python.linting.<linter>Args设置,并且该设置的值是由空格分隔的参数元素的列表。比如"python.linting.pylintPath": "pylint --load-plugins pylint_django"不正确。正确的语法是"python.linting.pylintArgs": ["--load-plugins", "pylint_django"] |

排除故障

调试是指修复代码并消除潜在的错误。Python 是一种语法类型的语言,这意味着代码编辑器的角色在调试中变得至关重要,因为一个好的编辑器可以帮助您立即找到代码中的问题。

VS 代码在两个方面处理调试。一方面,有 VS 代码的一般调试特性,比如检查变量、设置断点和其他通常依赖于语言的特性;另一方面,调试需要考虑特定于 Python 的调试配置,包括特定的应用程序类型和远程调试。

初始化配置

为了初始化调试配置,您必须首先在侧边栏中选择 Run 视图,然后点击 Run 图标。配置决定调试会话期间 VS 代码的行为,并在 launch.json 文件中定义,该文件存储在工作区的. VS Code 文件夹中。若要更改调试配置,您需要确保代码存储在文件夹中。

如果您还没有定义任何配置,您可以看到一个运行和调试按钮以及一个创建配置(launch.json)文件的链接:调试工具栏设置命令。要使用 Python 配置生成 launch.json 文件,请完成以下步骤:首先,单击创建 launch.json 文件链接或使用运行➤打开配置菜单命令。命令面板中将显示一个配置菜单,允许您为打开的文件选择所需的调试配置类型。接下来,在出现的选择调试配置菜单中,选择 Python 文件。调试配置菜单。

请记住,通过调试面板、F5 或在不存在配置时运行➤启动调试来启动调试会话也将调出调试配置菜单,但不会创建 launch.json 文件。

然后,Python 扩展生成并打开一个 launch.json 文件,该文件具有基于您之前选择的内容的预定义配置,在本例中为 Python 文件。您可以自定义这些配置(例如,通过添加参数),也可以添加自定义配置。

附加配置

默认情况下,VS 代码只显示 Python 扩展提供的最常用的配置。通过激活列表和 launch.json 编辑器中显示的 Add Configuration 命令,可以选择 launch.json 中包含的其他配置。当您使用该命令时,VS 代码会提示您所有可用配置的列表(向下滚动以查看所有 Python 选项):

  • 添加新的 Python 调试配置

  • 选择 Node.js: Gulp 任务会产生以下结果:添加了一个配置

  • 有关所有这些配置的详细信息,请参见调试特定的应用程序类型

调试期间,状态栏会显示当前配置和当前调试解释器。选择配置会调出一个列表,您可以从中选择不同的配置。通常,调试器使用与 VS 代码的其他特性相同的 python.pythonPath 工作空间设置。要专门为调试应用不同的解释器,您需要为适用的调试器配置在 launch.json 中设置 python 的值。或者,您可以在状态栏上选择指定的解释器来选择不同的解释器。

基本调试

开始调试 Python 文件的最简单方法是使用运行视图并单击运行和调试图标。如果之前没有进行任何配置,您将看到一个调试选项列表。您只需要选择适当的选项来快速开始调试您的代码。

两个最常用的选项是 Python 文件配置,用于操作当前打开的 Python 文件,以及 Attach to use with Process ID,用于将调试器添加到已经运行的进程中。添加配置后,可以从下拉列表中选择它,并使用 Start Debugging 按钮启动。此外,您还可以添加其他设置,如标准配置中不包含的参数: 15

  • **名称:**提供出现在 VS 代码下拉列表中的调试配置的名称。

  • type: 标识要使用的调试器的类型;对于 Python 代码,将此设置保留为 Python。

  • **请求:**指定开始调试的模式:

    • **启动:**在程序中指定的文件上启动调试器

    • **附加:**将调试器附加到已经运行的进程。有关示例,请参见远程调试。

    • **程序:**提供 Python 程序入口模块的全限定路径。默认配置中经常使用的值${file}使用编辑器中当前活动的文件。通过指定一个特定的启动文件,无论打开哪个文件,您都可以确保用相同的入口点启动程序。例如:

      "program": "/Users/Me/Projects/PokemonGo-Bot/pokemongo_bot/event_handlers/__init__.py",
      
      
  • python: 指向用于调试的 python 解释器的完整路径。

    如果未确定,此设置默认为 python.pythonPath 设置中标识的解释器,这相当于使用值${config:python.pythonPath}。要应用不同的解释器,请在调试配置的 python 属性中标识其路径。

    作为一个选项,您还可以使用在每个平台上定义的自定义环境变量来包含要使用的 Python 解释器的完整路径,这样就不需要其他文件夹路径。一旦需要向 Python 解释器传递参数,就可以使用 pythonArgs 属性。

  • pythonArgs: 使用语法" pythonArgs": [" < arg 1 >“,”< arg 2 > "]指定要传递给 Python 解释器的参数。

  • args: 指定要传递给 Python 程序的参数。由空格分隔的参数字符串的每个元素都必须包含在引号中,例如:

"args": ["--quiet", "--no-repeat", "--port", "1593"],

  • stopOnEntry: 设置为 true 时,在被调试程序的第一行中断调试器。如果省略(默认情况下)或设置为 false,调试器将程序运行到第一个断点。

  • console: Specifies how program output is presented as long as the defaults for redirectOutput are not edited. Most widely used console values are listed in Table 2-11.

    表 2-11

    输出值

    |

    价值

    |

    显示输出的位置

    |
    | — | — |
    | “内部控制台” | VS 代码调试控制台。如果 redirectOutput 设置为 False,则不显示任何输出。 |
    | “集成终端” | VS 代码集成终端。如果 redirectOutput 设置为 True,调试控制台中也会显示输出。 |
    | “外部终端” | 单独的控制台窗口。如果 redirectOutput 设置为 True,调试控制台中也会显示输出。 |

  • cwd: Specifies the current working directory for the debugger, which is the basic folder for any relative paths used in code. Once omitted, defaults to ${workspaceFolder} (the folder open in VS Code). As an example, say ${workspaceFolder} contains a py_code folder containing app.py, and a data folder containing salaries.csv. If you start the debugger on py_code/app.py, then the relative paths to the data file vary depending on the value of cwd (Table 2-12).16

    表 2-12

    日期文件路径

    |

    粗木质残体

    |

    数据文件的相对路径

    |
    | — | — |
    | 省略或${workspaceFolder} | 数据/薪水. csv |
    | $ {工作空间文件夹}/py_code | …/data/salary . CSV |
    | ${ workspace folder }/data | 薪水. csv |

  • redirectOutput: 设置为 true 时(默认为 internalConsole),使调试器将程序的所有输出打印到 VS 代码调试输出窗口中。如果设置为 false(对于 integratedTerminal 和 externalTerminal,默认情况下),则调试器输出窗口中不显示程序输出。使用“console”:“integrated terminal”或“console”:“external terminal”时,通常会禁用此选项,因为不需要在调试控制台中复制输出。

  • justMyCode: 当省略或设置为 true(默认)时,只对用户编写的代码进行调试。设置为 false 也会启用标准库函数的调试。

  • Django: 当设置为 true 时,激活特定于 Django web 框架的调试特性。

  • sudo: 当设置为 true 并与“控制台”一起使用时:“externalTerminal”,允许调试需要提升的应用程序。应用外部控制台是捕获密码所必需的。

  • pyramid: 设置为 true 时,确保使用必要的命令行 pserve 命令启动 pyramid 应用程序。

  • env: 为调试器进程设置系统环境变量之外的可选环境变量,调试器始终会继承这些变量。这些变量的值必须以字符串形式输入。

  • envFile: 包含环境变量定义的文件的可选路径。

  • gevent: 如果设置为 true,则启用 gevent 猴子修补代码的调试。

条件断点

断点也可以设置为基于表达式、命中次数或两者的组合来触发。Python 扩展支持整数的命中计数,以及前面带有==,>,> =, 5 的整数。

在代码中调用断点

在 Python 代码中,您可以在调试会话期间想要暂停调试器的任何时候调用 debugpy.breakpoint()。

断点验证

Python 扩展自动检测设置在不可执行行上的断点,例如 pass 语句或多行语句的中间。在这种情况下,运行调试器会将断点移动到最近的有效行,以确保代码执行在该点停止。

调试特定的应用程序类型

对于一般的应用程序类型,配置下拉菜单有各种不同的选项(表 2-13 )。 17

表 2-13

Python 的流行配置描述

|

配置

|

描述

|
| — | — |
| 附上 | 请参见上一节中的远程调试。 |
| Django | 指定" program “:” $ { workspace folder }/manage . py “,” args": [“runserver”]。还添加了“Django”:true 以启用 Django HTML 模板的调试。 |
| 瓶 | 请参见烧瓶调试。 |
| -风 | 将“ge vent”:true 添加到标准集成终端配置中。 |
| 金字塔 | 移除程序,添加" args “:[” $ { workspace folder }/development . ini “],添加” jinja": true 以启用模板调试,并添加" pyramid": true 以确保用必要的 pserve 命令启动程序。 |
| Scrapy | 指定“module”:“scrapy”并添加“args”:[“crawl”,“specs”,“-o”,“bikes . JSON”]。 |
| 沃森 | 指定" program “:” $ { workspace folder }/console . py “和” args": [“dev “,” runserver “,”- noreload=True”]。 |

摘要

在本章中,我们从 Python 开发者的角度讲述了 VS 代码中的几个编程基础,比如林挺、调试和代码格式化。

在下一章中,我们将更深入地研究 Python 开发的 VS 代码,并继续其他代码范例和技巧。

VSC,“括号对上色器”, https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer ,2021 年 7 月 29 日访问。

2

VSC,“Python 片段”, https://marketplace.visualstudio.com/items?itemName=cstrap.python-snippets ,2021 年 7 月 29 日访问。

3

Visual Studio Code,《Python Test Explorer for Visual Studio Code》, https://marketplace.visualstudio.com/items?itemName=LittleFoxTeam.vscode-python-test-adapter ,2021 年 7 月 29 日访问。

4

VSC,“VSC 的 Python 测试资源管理器”

5

VSC,“更好的注释”, https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments ,2021 年 7 月 29 日访问。

6

VSC,“VSCode Python Docstring 生成器”, https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring ,2021 年 7 月 29 日访问。

7

VSC,“VSCode Python Docstring 生成器”

8

VSC,《在 VSC 中编辑 Python》, https://code.visualstudio.com/docs/python/editing ,2021 年 7 月 29 日访问。

9

VSC,“在 VSC 中编辑 Python”

10

Visual Studio Code,《Visual Studio 中的林挺 Python 代码》, https://code.visualstudio.com/docs/python/linting ,2021 年 7 月 29 日访问。

11

VSC,“VSC 中的林挺 Python”

12

VSC,“VSC 中的林挺 Python”

13

VSC,“VSC 中的林挺 Python”

14

VSC,“VSC 中的林挺 Python”

15

VSC,《VS 代码中的 Python 调试》, https://code.visualstudio.com/docs/python/debugging ,2021 年 7 月 29 日访问。

16

VSC,“VS 代码中的 Python 调试”

17

VSC,“VS 代码中的 Python 调试”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值