编辑器#

Spyder的多语言编辑器面板是该IDE的核心组件,您可以在此创建、打开和修改源代码文件。 编辑器提供多种核心功能,如自动补全、实时分析、语法高亮、水平和垂直分屏等。 此外,它还集成了多种强大工具,为用户带来简单易用且高效的编辑体验。

Spyder's Editor pane, split horizontally and with style analysis

关键组件#

编辑器面板由以下区域组成:

Spyder's Editor pane, showing its different areas (described below)
  1. 左侧边栏显示行号,并展示当前文件中存在的任何代码分析警告。点击行号可选中该行的文本,点击行号右侧可设置断点

  2. 滚动条允许在文件中进行垂直和水平导航。

  3. 上下文(右键单击)菜单显示与点击内容相关的操作。

  4. 选项菜单(右上角的“汉堡”图标)包含与编辑器相关的实用设置和操作。

  5. 编辑器窗格顶部的地址栏显示当前文件的完整路径。

  6. 标签栏显示所有已打开文件的名称。 它还有一个浏览标签页按钮(位于左侧),用于显示所有打开的标签页并在它们之间切换——这在打开多个标签页时非常有用。

界面#

标签页#

您可以通过标签页在编辑器中浏览和导航已打开的文件。 点击标签栏左侧的浏览标签页按钮,将显示已打开文件的列表,当前活动标签页会被勾选。

Spyder's Editor pane, showing the tabs browser

通过拖放重新排序文件,或使用选项菜单中的按字母顺序排序标签页功能,该功能还允许关闭活动标签页右侧的所有标签页,或除活动标签页外的所有标签页。

Spyder's Editor pane, showing how to browse and sort open tabs alphabetically

文件切换器#

编辑器具有文件切换器功能,可让您在多个已打开文件之间导航和切换。 当打开多个文件时,文件切换器有助于定位任何文件。

Spyder's Editor pane, showing the file switcher

可以通过文件 ‣ 文件切换器菜单或快捷键Ctrl-P访问,该功能包含搜索功能。 您可以输入已打开文件的任何部分名称,如果存在匹配文件,按Enter键即可切换到该文件。

Spyder's Editor pane, showing searching and switching to an existing file

分割面板#

编辑器可以按需水平或垂直分割成多个独立面板。 这样就能同时查看和编辑多个文件(或同一文件的不同部分)的内容。

Spyder's Editor pane, showing how to split panels

通过选项菜单中的垂直分割 (Ctrl-Shift-{) 和 水平分割 (Ctrl-Shift--) 命令来分割编辑器,使用 关闭此面板 (Alt-Shift-W) 关闭选中的分割面板。

注意

关闭此面板 会关闭一个分割面板,而 关闭 则会隐藏整个编辑器窗格(包括所有分割面板,这些分割面板在重新打开编辑器时会恢复)。

编辑功能#

语法高亮#

为了提高代码的可读性,Spyder提供了语法高亮功能,可以决定编辑器中文本的颜色和样式,以及在IPython控制台中的显示效果。

您可以在首选项 ‣ 外观下配置和预览语法高亮主题及字体。 语法高亮主题部分允许您根据个人偏好更改语法元素的颜色、样式及背景。 您可以通过下拉菜单切换可用主题,修改所选主题,创建新主题等操作。 字体部分可让您更改文本字体和大小。

Spyder's Editor pane, showing how to switch between syntax highlighting themes

注意

对语法高亮主题和字体设置的更改适用于所有源文件,无论其语言如何。

代码单元格#

在Spyder中,“代码单元”是指脚本中的一个代码块,可以轻松地在当前IPython控制台中一次性执行。 这与Jupyter Notebook和MATLAB中的“单元”行为类似。 您可以根据需要将脚本划分为任意数量的单元,或者完全不划分——选择权在您手中。

Spyder's Editor pane, showing an example of a code cell

您可以通过以下开头的行来分隔单元格:

  • # %% (标准单元格分隔符), 或

  • # (IPython笔记本单元格分隔符)

在分隔符右侧提供描述将使该单元格在大纲中拥有自己的名称。 您还可以通过向单元格分隔符添加更多%符号来创建"子章节",例如使用# %%%创建二级子章节,# %%%%创建三级子章节等。 这将在大纲面板中显示多个层级。

Spyder outline pane, showing an example of sub sections

注意

这仅影响单元格在大纲中的显示方式,而不会影响在编辑器中运行它。

要运行单元格中的代码,可以使用运行 ‣ 运行单元格、工具栏中的运行单元格按钮或键盘快捷键(默认为Ctrl-Enter/Cmd-Return)。 您还可以使用运行 ‣ 运行单元格并前进(默认为Shift-Enter)来运行当前单元格并跳转到下一个单元格,从而快速浏览多个单元格。

自动格式化#

编辑器内置支持使用多种流行工具自动格式化代码,包括Autopep8Black使用{tool}格式化文件或选中内容命令位于源代码或上下文菜单中,可以格式化选中的片段(如果有文本被选中)或整个活动文件。

Spyder Editor pane, showing an example of code selection formatting

您可以让编辑器在每次保存工作时自动格式化文件。 要进行设置,请前往首选项 ‣ 代码补全与检查 ‣ 代码风格与格式化 ‣ 代码格式化并勾选保存时自动格式化文件选项。

Spyder's preferences dialog, showing checking the autoformat files on save setting

运行代码#

编辑器允许您运行整个文件以及特定的行、选区或单元格。

当您的代码正在运行时,

运行文件#

运行整个编辑器文件,可以使用运行 ‣ 运行菜单项、运行文件工具栏按钮或F5键。 使用运行 ‣ 重新运行上次脚本来重新运行最近通过上述方式执行的文件。

运行行/选择#

您可以通过工具栏中的运行选中行或当前行选项、运行菜单或F9键来执行当前行或选中的多行代码。 运行当前行后,光标会自动跳转到下一行,因此您可以逐行调试代码。 与运行文件不同,执行的行会显示在IPython控制台中。

运行单元格#

要运行一个单元格,请将光标置于其中并使用运行 ‣ 运行单元格菜单项、运行当前单元格工具栏按钮或Ctrl-Enter / Cmd-Return键盘快捷键。 使用运行单元格并前进运行菜单/工具栏中或Shift-Enter可在运行后跳转到下一个单元格,这对于快速浏览单元格非常有用。

运行配置#

您可以使用每个文件的运行配置对话框来设置每个文件的工作目录、控制台模式(当前、专用或外部)、命令行参数、执行选项(清除所有变量、在现有/空命名空间中运行、出错时调试)等。

Spyder's Editor pane, showing the Run Configuration dialog

要访问它,请点击 运行 ‣ 文件配置… 或按下 Ctrl-F6 / Cmd-F6

代码导航#

查找和替换#

要在当前文件中搜索文本,请使用搜索 ‣ 查找文本或快捷键Ctrl-F / Cmd-F;要进行替换,请使用搜索 ‣ 替换文本或快捷键Ctrl-R / Cmd-R。 在编辑器下方的搜索面板中输入搜索字符串时,会高亮显示所有匹配结果并统计总数。 可以通过查找/替换面板中的上一个下一个按钮、搜索菜单中的对应选项,或使用F2F3键在匹配项之间导航。 使用.*按钮可将搜索文本作为正则表达式处理,Aa按钮启用区分大小写,[–]按钮仅匹配完整单词(例如对于data,会匹配data()但不匹配dataframe)。

Spyder's Editor pane, showing the find and replace panel

转到行号#

转到行对话框允许跳转到活动文件中的特定行。 通过搜索 ‣ 转到行或快捷键Ctrl-L / Cmd-L打开,输入您想要滚动到的行号并按Enter键(或点击确定)。

Spyder's Editor pane, showing the go to line feature

它还会显示文件中的当前行号和总行数。

类/函数选择器#

该面板在Source ‣ Show selector for classes and functions下激活,会显示编辑器光标所在位置的单元格名称、函数/方法和类(如适用)。 使用其下拉菜单可以查看并跳转到当前文件中的函数、方法和类。

Spyder's Editor pane, showing the class and function selector panel

代码分析与补全#

Spyder使用语言服务器协议 (LSP)为编辑器提供代码补全和代码检查功能,类似于VSCode、Neovim和其他流行的编辑器/IDE。

注意

许多与代码补全和静态检查相关的问题超出了Spyder的控制范围,这些可能是LSP(语言服务器协议)的限制或是被检查代码本身的问题,但部分问题仍有解决方法。 请参阅代码补全/帮助功能失效了解故障排除步骤。

Python 默认支持开箱即用,高级用户可以通过在首选项 ‣ 代码补全与检查 ‣ 其他语言下为其他语言设置 LSP 服务器来添加代码补全和语法检查支持。

代码补全#

在编辑器中默认启用了输入时的自动代码补全功能,也可以通过手动触发Ctrl-Space/Cmd-Space来显示可能的补全选项(每个选项都有弹出式帮助)和可用的代码片段。 例如,输入cla将显示关键字class、装饰器classmethod以及两个带有类模板的内置代码片段。 使用方向键和Enter键或双击选择所需的补全选项。

Spyder's Editor pane, showing a code completion example

您可以在首选项 ‣ 代码补全与检查 ‣ 常规 ‣ 补全下启用或禁用实时代码补全功能,并修改其触发条件和显示结果。 Spyder还允许您在首选项 ‣ 代码补全与检查 ‣ 高级下定义自定义补全代码片段,这些片段将作为LSP提供功能的补充。

代码检查与风格规范#

Spyder可以选择性地在编辑器中高亮显示语法错误、样式问题以及代码中的其他潜在问题,这有助于您快速发现错误并使代码更易于阅读和理解。

Spyder's Editor pane, showing an example of a highlighted code error

编辑器的基础语法检查功能由Pyflakes提供,可警告代码中的语法错误和潜在缺陷。 该功能默认启用,可在首选项 ‣ 补全与语法检查 ‣ 语法检查下禁用或自定义。

Spyder's preferences dialog, showing linting settings

代码风格分析功能由Pycodestyle提供支持,用于标记与PEP 8风格规范的偏差。 该功能默认不启用,但您可以通过首选项 ‣ 补全与代码检查 ‣ 代码风格与格式化 ‣ 代码风格下的选项来启用它,并自定义显示的Pycodestyle错误代码

Spyder's preferences dialog, showing code style and formatting settings

内省特性#

如果你想查看某个函数、类或变量的定义,需要在编辑器中Ctrl/Cmd-点击其名称(或点击名称后按下Ctrl-G / Cmd-G跳转到声明该元素的文件和行号位置。

Spyder's Editor pane, showing the go to definition feature

你可以悬停在对象名称上获取弹出帮助,如帮助面板文档中所述

Spyder's Editor pane, showing an example of a hover hint

最后,如果您输入函数名、方法名或类构造函数名后跟左括号,将弹出调用提示框,在您输入参数时显示函数的参数列表及其文档摘要。 这些功能可以在首选项 ‣ 代码补全与检查 ‣ 内省中启用和自定义。

键盘快捷键#

要查看编辑器的主要键盘快捷键,请参考帮助 ‣ 快捷键摘要部分。 完整列表可在首选项 ‣ 键盘快捷键中浏览、搜索和自定义(双击)。