从文本编辑器迁移到 PyCharm - Python 开发环境升级指南
本指南面向使用 Vim、Emacs 或 Sublime Text 等文本编辑器的 Python 开发人员,为他们提供切换到 PyCharm 的信息。指南首先简要讨论 IDE 的概念,然后探讨具体差异。
什么是 IDE?
Python 开发人员长期以来使用了各种工具来编写代码。虽然界限模糊,但这些工具大致分为两类:文本编辑器和集成开发环境(IDE)。简而言之,文本编辑器专注于单个文件的编辑,提供非常简洁的体验。
IDE 顾名思义,具有更广阔的视野。它希望查看你的整个项目以及所有与编码相关的活动,并将这些统一到一个一致且强大的用户界面中。尽管这两类工具有所重叠,但总体范围是主要区别。
像 PyCharm 这样的 IDE 会查看项目中的所有代码、依赖项中的代码以及平台本身的代码,因此它能在编码活动中提供大量帮助。这种分析和协助体现在许多强大的功能中:
- 自动补全 通过完成你的输入来加速准确编码
- 快速修复 能发现常见错误并提供特定语言的修正
- 代码意图 为常见的 Python 模式建议优化和改进
- 代码重构 使常用的 Python 重构变得轻松
- 模板 自动化重复任务
- 代码导航 分析所有代码的结构和语义,提供丰富的代码导航方式
虽然文本编辑器提供了一些这些功能,但 PyCharm 超越了基于字符串的操作,解决了代码和语言的 语义,提供了智能协助。PyCharm 理解 Python,并理解你的代码,因此它可以跳转到符号定义的位置,或者你的类被使用的位置,或者在代码库中重构方法及其用法。实际上,这些能力不仅限于 Python:从 IntelliJ 家族的其他成员中,PyCharm 继承了一流的 IDE 支持,用于 Web 开发和许多其他领域。
除了这些编码协助功能之外,PyCharm 还将相关操作集成到同一环境中:版本控制、数据库管理、分析、测试运行、远程环境等。每个功能都以集成的方式提供:在查看差异时应用更改可以自动触发重新运行测试。
最后,这种功能伴随着以产品为中心的理念:一切开箱即用。虽然其他工具有一长串可能的功能,但你需要自己组装和维护整体。对于喜欢折腾的人来说,这很好。而使用 PyCharm 作为你的 IDE,这些功能开箱即用,并且得到专业支持,年复一年。
PyCharm 界面
由于像 PyCharm 这样的 IDE 涉及范围广泛,用户界面(UI)比简单的文本编辑器需要更多的指导。例如,以下是 PyCharm 中一个典型的项目:
- 窗口头部包含一组小部件,提供对最常用操作的快速访问:项目小部件、VCS 小部件和运行小部件。它还可以打开“与我一起编码”、“全局搜索”和“设置”。
- 左侧的项目工具窗口显示你的项目文件。
- 右侧的编辑器是你实际编写代码的地方。它有标签页,便于在打开的文件之间导航。
- 右键单击界面元素或代码片段时会打开上下文菜单,显示可用的操作。
- 导航栏允许你快速导航项目文件夹和文件。
- 编辑器旁边的空白区域显示你设置的断点,并提供便捷方式浏览代码层次结构,如转到定义/声明。它还显示行号和每行的 VCS 历史记录。
- 编辑器右侧的滚动条。PyCharm 通过运行代码检查不断监控代码质量。右上角的指示器显示整个文件的代码检查状态。
- 工具窗口是附加在工作区底部和侧面的专用窗口。它们提供对典型任务的访问,如项目管理、源代码搜索和导航、版本控制系统集成、运行、测试、调试等。
- 状态栏显示项目和整个 IDE 的状态,并显示各种警告和信息消息,如文件编码、行分隔符、检查配置文件等。它还提供对 Python 解释器设置的快速访问。
有关显示或隐藏工具窗口的更多信息,请参阅用户界面和工具窗口页面。
仍然觉得太多?如果你是从文本编辑器过渡而来,想要简洁的外观,PyCharm 有几个解决方案:
- 窗口和工具栏可以隐藏,直到需要时再显示
- 无干扰模式和其他模式会去除大部分视觉元素,专注于代码,交互通过键盘快捷键和操作搜索完成
实际上,PyCharm 通过以键盘为中心、搜索为导向的交互方式,拥抱了现代、简洁的趋势。不想在菜单中点击来格式化代码?不仅有快捷键序列,还可以按 Ctrl + Shift + A 来搜索“格式化代码”的操作:
项目
如前所述,PyCharm 不仅关注单个文件,而是将项目视为完整的软件解决方案。不仅是项目伴随的软件,还包括相关任务。
项目包含的内容远不止这些工件。在项目中,你可能有 3 个文件以特定顺序在标签页中打开。这些信息保存在项目的元数据中,位于项目根文件夹的.idea 子目录中。因此,下次打开项目时,你会恢复到该配置。这不仅适用于配置:PyCharm 保存和恢复编辑时的更改,由本地历史记录支持,可以将代码恢复到之前的状态。PyCharm 的 IDE 中有大量内容是项目配置的一部分:Python 设置、运行代码的场景、数据库连接信息等。
你的第一个项目
如果你目前使用的是文本编辑器,那么你进入 PyCharm 的第一步将会是创建一个项目。你有多种选择和机会。让我们讨论其中一些。
首先,你可能从空白开始,或者从磁盘上现有的目录开始,或者从尚未检出的远程存储库开始。
接下来,你可能有一个或多个想要在项目中使用的 Python 解释器。PyCharm 支持本地安装的 Python 2 和 3,以及创建或重新使用虚拟环境。它还支持基于 Anaconda 的解释器、远程解释器、Vagrant 和 Docker。你可以在开始 PyCharm 的“新建项目”向导之前设置这些,或者在项目创建期间指定(甚至创建)这些。此外,你也可以在创建项目后改变主意。
使用 PyCharm Professional Edition,我们让开始使用流行项目类型变得容易。例如,创建一个 Django 项目将生成遵循 Django 最佳实践的目录结构,并添加一个启动 Django 服务器的“运行配置”。
IdeaVim
长期使用 Vim 的用户在其编辑器使用方式上有大量投资。幸运的是,JetBrains 有一个非常强大且支持良好的 IntelliJ 插件,名为 IdeaVim,它是一个“用于基于 IntelliJ 平台的 IDE 的 Vim 模拟插件”。
通过此插件,你可以在 PyCharm 内部进入 Vim 模拟模式。更多相关信息可在上述链接的 GitHub 页面以及 Twitter 账号和 PyCharm IdeaVim 屏幕录像中找到。虽然有些过时,但这里有一篇由前 Vim 用户深入探讨的评论。
学习如何在 PyCharm 中使用 IdeaVim 插件,请查阅使用 Vim 编辑器在 PyCharm 中(IdeaVim)。
也可以将 vim 配置为 PyCharm 的外部工具,具体方法参见 PyCharm:在 Vim、Emacs 或 Sublime Text 中打开当前文件。
Emacs 和 vim 是面向硬核开发人员的两个流行文本编辑器。PyCharm 提供了一个与许多 Emacs 快捷键序列匹配的键盘映射。
虽然 PyCharm 没有像 IdeaVim 那样全面的 Emacs 插件,但社区有一个活跃的插件 emacsIDEAs,它提供了一些来自 Emacs 和其扩展(如 AceJump)的有用功能。
你可以将 Emacs 配置为 PyCharm 的外部工具,用于编辑文件。此过程在该教程中有详细描述。
自定义和扩展
PyCharm 的 IntelliJ 基础非常广泛(许多 IDE 构建在其之上)且非常成熟,这也带来了另一个好处:PyCharm 非常可定制。例如,它还提供了一种可选的、更暗的主题“Darcula”,以匹配现代编辑器趋势。除了调整主题外,还可以定制许多外观和感觉选项:字体大小、颜色方案、工具栏设置、气球行为等。
“它看起来如何”只是自定义选项的开始。我们讨论了切换到不同的捆绑键盘映射。但你可以以多种方式扩展和自定义键盘映射,将不同的快捷键映射到不同的操作。除此之外,PyCharm 的行为还可以扩展:安装插件、自定义操作“模板”、更改代码意图等。
多光标
这是一个来自其他工具的开发者们所青睐的强力功能:多光标。Sublime Text 首次引入了这一概念,IntelliJ 为其平台上所有 IDE 添加了这一功能。借助 PyCharm 的多光标功能,可以使用多个插入符,每个插入符都可进行独立的 IDE 操作。这一功能在 PyCharm 多重选择屏幕录像中有详细展示。
标签页和拆分窗口
像 Emacs 和 vim 这样的成熟文本编辑器以其丰富的方式将屏幕拆分为多个区域而闻名,允许多个文件同时可见。这些工具不仅限于基础功能:你可以以丰富的方式在这些区域之间移动,垂直或水平拆分,重新拆分,并且所有这些都可以通过键盘完成。
PyCharm 也具备展示多个文件的成熟功能。最基本的,你可以将多个文件打开为标签页,这些标签页可以手动重新组织或按字母顺序排序。标签页可以固定或脱离成独立窗口。
除了标签页,你还可以将编辑器窗口拆分为独立的窗格,以同时显示多个文件/标签页。拆分可以垂直或水平进行。你可以通过将标签页移动到相反组来重新排列当前打开的文件。
最后,所有上述操作都可以通过键盘中心化的方式完成,使你能够轻松处理多个文件和窗口,而无需使用鼠标。
运行代码
虽然文本编辑器提供了处理 Python 代码运行的工具,但 PyCharm 通过称为运行配置的设施将这一功能大大扩展。这些运行配置允许你定义与运行 Python(或其他语言如 JavaScript)代码相关的参数。然后,当你运行该运行配置时,所有相关设置都会应用。
此外,PyCharm 在专用工具窗口中运行你的代码,该窗口为处理运行中的代码提供了许多功能:停止、重新运行等。输出显示在迷你控制台中,错误显示带有可点击行号的回溯。此工具窗口以及运行和重新运行代码都可以通过键盘驱动。
这些运行配置还适用于特殊类型的运行:带有专用窗口显示测试输出的测试运行程序配置、带有可视化调试器的调试配置、测试覆盖率运行配置、分析运行配置,甚至还有并发图配置。所有这些都为专业 Python 开发人员的工作流程提供了真正的价值。
最后,PyCharm Professional 为其支持的框架添加了新的运行配置类型。例如,Pyramid 运行配置了解 Pyramid 配置文件和 Pyramid 独有的功能。
提高效率的小提示
从命令行运行
虽然 PyCharm 像其他应用程序一样传统上启动(从桌面),但你也可以从命令行与 PyCharm 交互。这些可以在初始安装期间设置。例如,在 Linux 和 macOS 上,/usr/local/bin/charm 可用于在 PyCharm 中打开文件。你还可以运行检查和使用 PyCharm 的差异工具。
打开单个文件
你无需创建项目即可打开特定文件。PyCharm 的打开菜单(或命令行“charm”程序)可以在现有项目的窗口或新窗口中打开单个文件。
临时文件
如果你需要一个临时编辑器来编写代码或文本片段,而不希望将其保存在项目中甚至文件中,PyCharm 提供了一种称为临时文件的设施。你可以创建与语言关联的临时文件(因此具有语法高亮显示、代码补全、可运行等功能)或临时缓冲区(小文本片段)。
这些临时文件具有许多功能:你可以列出它们(最多五个),关闭和删除它们,将它们与语言关联,并重新组织它们。临时文件保存在项目中的一个特殊区域。
内置提示
当你首次安装 PyCharm 时,每次启动时会提供一个友好的提示。它还允许你关闭这些提示。如果你以后想查看更多提示,可以在主菜单中选择帮助 | 每日一招。
安装插件
正如前面多次提到的,PyCharm 和 IntelliJ 拥有大量 IDE 插件生态系统。PyCharm 本身拥有近 500 个插件,涵盖许多不同类别。
实际上,PyCharm IDE 本身是由插件组成的。这就是例如 PyCharm 从 WebStorm 继承许多 Web 功能的原因:它们通过插件共享相同的核心功能。
通过 PyCharm 的设置对话框,可以浏览、安装、更新和删除插件。此外,插件会与 PyCharm 本身一起检查更新。如果插件有更新,系统会提示你下载并重新启动 PyCharm。
多语言开发
虽然文本编辑器支持多种语言,但 PyCharm 在 Python 之外带来的强大功能是独一无二的。例如,PyCharm 是一流的 Web 开发 IDE。它不仅提供 HTML、CSS 和 JavaScript 的语法高亮显示和自动完成,还提供完整的功能范围:语义感知的代码检查、重构、调试、启动实时服务器、将 SASS 文件转换为 CSS、浏览 npm 运行脚本等。
这也适用于 Web 开发之外的领域:IPython Notebook 模拟、reStructuredText 等。PyCharm 是如何做到这一点的?正如前面提到的,它与基于 IntelliJ 的其他 IDE 兄弟共享 JetBrains 插件。
迷你地图
其他工具,如 Sublime Text 和 Visual Studio(通过插件),提供了一种可视化的滚动方式。通过这种方式,正常的滚动条被文档的图形缩略图和你当前的滚动位置所取代。
PyCharm 用户也可以通过 CodeGlance JetBrains 插件获得此功能,该插件符合选定的主题。
其他资源
- PyCharm 主页、PyCharm 博客和 Twitter 账号。
- 官方帮助系统、键盘映射参考和使用在线资源。
- 在社区论坛或 StackOverflow 主题中提问。
更多建议: