个性化阅读
专注于IT技术分析

如何提高PhpStorm的效率:真正重要的IDE

本文概述

成为一名优秀的软件开发人员意味着什么?

首先, 它需要你正在使用的特定技术堆栈的深入知识。如果你是LAMP开发人员, 那么你毫无疑问需要成为PHP和MySQL的专家, 了解现代框架, 并且在Linux管理方面拥有一些体面的技能。

其次, 同样重要的是, 你每天在工作流程中使用的补充工具的工作知识。

你需要能够与版本控制系统, 持续集成工具, 虚拟机管理服务(例如Vagrant)以及显然的集成开发环境(IDE)一起正常工作。

本文介绍了流行的, 功能强大的IntelliJ IDEA IDE PhpStorm, 以及如何通过一点点的努力就可以轻松地将效率提高一倍, 甚至可以防止在编写代码时出现错误。

使用键盘快捷键进行自我训练

让我们从任何IDE的最简单甚至最重要的技能入手:正确使用键盘。

如果将经验丰富的程序员与普通PC用户进行比较, 你会注意到的第一件事是, 程序员几乎所有的时间都花在键盘上, 而几乎不用触摸鼠标。这样做的原因是:效率更高。

首先, 成为一名好打字员

尽管键入与IDE技能没有直接关系, 但是如果你需要凝视键盘来查找每个键, 则快捷键就没用了。

如果你尚未输入至少每分钟50个字(WPM)的速度, 请找到诸如TypingClub.com之类的触摸打字培训网站, 并提高速度。

也有竞争性打字网站, 例如TypingRaces.com, 你可以在其中与其他人竞争打字。我的推荐?每天早晨参加热身赛。

训练自己使用PhpStorm的快捷方式

学习最快的方法是不要给自己键盘快捷键的替代方法。

在研究快捷方式时, 我关闭了所有菜单, 选项卡, 导航栏等。你也可以通过导航到”查看”菜单并取消选中所有标记来完成此操作(你可能要离开”状态栏”):

在PhpStorm中取消选中视图菜单项。

我的IDE现在看起来像这样:

准系统IDE。

如你所见, 即使我愿意, 我也无法避免使用快捷方式。

我花了大约三到四天的时间才能克服笔记本电脑的调整阶段。

如果你发现动机低落, PhpStorm会提供内置的生产率指南。它包含每个功能的列表和使用情况统计信息。只需点击”帮助”, 然后点击”生产力指南”, 你会看到类似以下内容:

生产力菜单

如你所见, 快捷方式使我免于键入超过20, 000个其他字符(六个月之内), 并避免了大约1, 000个错误。很有动力!

它还可以告诉我我不经常使用哪些功能, 并确定可以提高快捷键技能的地方。查看统计信息, 并明智地使用知识。

热门键盘快捷键

Jetbrains提供了一个方便的PDF文件, 其官方文档中列出了所有可用的快捷方式, 此外还有”你不能错过的键盘快捷键”列表。立即开始学习此方法, 直到你可以入睡为止。

到目前为止, 我最喜欢的快捷方式是:

  • Ctrl + E-在最近使用的文件之间切换
  • Ctrl + /-注释/取消注释一段代码
  • Ctrl + B-转到类声明
  • Ctrl + N-导航到课程
  • Ctrl + R-搜索和替换
  • Ctrl + Alt + L-重新格式化代码
  • Alt + Enter-显示意图动作和快速修复
  • Ctrl + Shift + Enter-完整的语句

其中一些是不言自明的, 其他可能会使用更多的覆盖范围。

使用Ctrl + E切换文件并按Enter

假设你需要经常在两个文件之间切换, 例如在具有应用程序业务逻辑的PHP类和用于呈现和输出它的模板之间。

许多开发人员会从键盘切换到鼠标, 导航到带有文件的选项卡, 单击它, 然后使用滚轮找到所需的部分。问题:速度非常慢!

先按Ctrl + E再按Enter更好吗?

Ctrl + E会向你显示最近使用过的文件列表, 如果立即按Enter键, 你将切换到当前文件之前的文件。

你可以使用ctrl + e在文件之间切换。

如果要返回, 只需再次按相同的顺序即可。

使用ctrl + e在文件之间切换。

这是只有三个按键才能在两个文件之间切换的最快方法!试想一下, 每天要执行数百次操作时, 你将节省多少时间。

使用Alt + Enter显示意图动作和快速修复

任何现代的IDE都会突出显示错误并提供一些代码改进建议。如果将光标移至任何不完整或未记录的代码段, 则会看到一个灯泡图标, 如果单击它, 则会看到一个弹出菜单, 其中包含可能的操作。

通过按Alt + Enter可以完成相同的操作, 这更加方便。

Alt + Enter可显示你的意图操作和快速修复。

在上面的屏幕截图中, PhpStorm提供了两个选项:向函数添加PHPDoc规范(这是一个很好的建议, 敬请期待), 并删除未使用的参数。

相同的快捷方式可用于许多其他常见操作:为类属性创建getter和setter, 在构造函数中初始化字段, 添加未定义的方法和属性等。

使用Ctrl + Shift + Enter完成语句

此快捷方式非常简单明了, 同时又非常有用, 完全按照它说的去做。

例如, 如果键入$ i = 0, 然后紧接着按Ctrl + Shift + Enter, 则PhpStorm将在表达式中添加分号。如果键入if和其后的快捷方式, PhpStorm将添加方括号, 依此类推。

尽可能频繁地使用此快捷方式。由于所有代码均由标准结构组成, 因此可以节省大量时间。编写结构中任何速度的提高都使编写代码的速度也快得多!

IdeaVim插件

使用快捷键可以极大地提高你的工作效率, 但是如果你还不够用的话, 那么下一个便是IdeaVim插件。

你可能知道, Vim是一个控制台文本编辑器, 被Linux极客和devops的工程师广泛使用, 用于通过命令行管理远程服务器。

Vim具有两个重要特征。

首先, 很难学习。其次, 如果你知道得很清楚, 它就会有所回报。与任何GUI编辑器相比, 你在文本编辑方面的工作效率将大大提高。在你的职业生涯中, 有些情况下你别无选择, 只能使用控制台编辑器, 例如Vim(例如, 如果你需要在远程Web服务器上修复某些内容, 而你只能通过控制台访问它)。

但是Vim与PhpStorm有什么关系?

好吧, 许多开发人员都希望将Vim的效率与现代IDE的功能结合起来(例如, 代码完成, 类搜索, 高级搜索和导航)。为此, 创建了IdeaVim插件。

重要说明:从现在开始, 我假设你了解Vim的基础知识。如果不这样做, 你可以开始将Vim与vimtutor一起使用, 几乎在所有Linux发行版或openvim中都可以访问它。

插件安装

1.依次导航至”文件”, “设置”, “插件”, 然后在插件搜索框中输入IdeaVim。选中插件名称右侧的复选框, 然后单击”应用”。 2.重新启动PhpStorm。 3.通过依次选择”工具”和” Vim Emulator”打开插件

通过工具菜单启用Vim仿真器。

4.原始的PhpStorm快捷方式和Vim快捷方式(由插件启用)可能会相互冲突, 因此你需要手动解决这些冲突。依次导航到”文件”, “设置”, “其他设置”, 然后选择”视频模拟”。你会看到冲突的快捷方式列表。在此列表中, 你可以选择使用绑定到该键序列的PhpStorm快捷方式还是Vim快捷方式。你可以在下面的屏幕截图中看到我当前的选择。如果你无法做出决定, 只需保留一个未定义的快捷方式即可; PhpStorm将要求你选择第一次使用它的时间。

PhpStorm和Vim Emulator之间会有一些捷径冲突,但是你可以选择使用哪种。

插件使用

打开插件后, 你会立即注意到编辑区域与Vim相似:

  • 游标改变了形式, 变成矩形, 就像在Vim中一样。
  • 如果尝试在编辑器中键入内容, 则不会发生任何事情。

从这一点开始, 你可以像在Vim中一样完全开始编辑文件, 使用h, j, k, l键进行导航, 使用i键在正常模式和插入模式之间切换, 等等。

该插件支持几乎所有的Vim快捷方式。

同时, 所有IDE功能仍然存在, 因此你可以仅使用键盘(如在Vim中)就可以非常快速地编辑文本, 并且仍可以在类, 文件, 用法和定义之间进行切换(例如在PhpStorm现代工作流程中)。

高级搜索

与普通文本编辑器相比, 任何IDE的最大优点之一就是能够实现高级搜索。

如果你仅使用小型项目, 则这似乎是多余的, 但是当你开始使用大型代码库且类之间具有复杂的OOP关系时, 你将了解它是必不可少的。

通过通用搜索(Ctrl + F)或搜索替换(Ctrl + R)可以很容易地在文件中找到特定的字符串, 但是如果你需要在成千上万的文件中找到特定类的定义呢?或者, 如果你想在包含数千行代码的类中找到特定的方法?还是你想从检索结果中排除所有评论?这就是像PhpStorm这样的现代IDE所提供的帮助。

在本节中, 我将向你展示PhpStorm中最有用的搜索变体。

在路径中查找

普通搜索后, 最简单的搜索是在项目的某些子文件夹中的所有文件中搜索特定的字符串。它在PhpStorm中非常容易实现, 以至于我比其他任何搜索选项都更频繁地使用它。

例如, 在我的示例应用程序中搜索类User的用法。

1.按Ctrl + Shift +F。你将看到一个包含搜索选项的弹出窗口。在查询字符串中输入”用户”。你会在”预览”标签中看到许多结果:

基本的Ctrl + Shift + F搜索。

2.现在, 我们可以切换到”预览”选项卡, 并在那里手动查找所需的结果, 但是我们有100多个匹配项。乏味!让我们更具体一点。

首先, 我们正在搜索班级用法, 因此让我们选中”仅全词”选项。这将帮助我们避免出现类似E_USER_ERROR的结果。

接下来, 让我们排除搜索注释和字符串文字的可能性, 并仅将结果限制为.php文件。

有时, 指定项目的更具体的子文件夹也很有意义。在这种情况下, 所有特定于项目的代码都位于app文件夹中。

因此, 我们将范围目录更改为example-app / app。

现在, 我们有一个这样的搜索窗口:

在路径搜索中进行更精细的查找。

只是通过更加具体地指定搜索参数, 我们将搜索结果的数量从数百个减少到了24个!

现在, 手动检查它们非常容易。此外, 我们甚至不需要单独打开每个文件, 因为我们有一个非常方便的预览标签:

路径搜索结果中的查找预览选项卡。

在日常实践中, 路径搜索中的查找覆盖了我进行的所有搜索的大约80%。它非常有用, 即使你不使用其他任何内容进行检索, 也仍然会非常高效。

前往宣言

PhpStorm的另一个极其重要的功能(与所有现代IDE一样)是在类和函数的用法和声明之间切换。

假设我们有一个可以创建新用户的函数。显然, 我们不记得User类的所有方法和属性, 因此我们需要检查类的声明来决定如何执行所有必需的操作。有几种方法可以做到这一点。

首先, 你可以打开一个类声明作为快速只读弹出窗口。

只需将光标移到任何类用法上, 然后按Ctrl + Shift +I。将出现只读窗口:

使用Ctrl + Shift + I获取只读预览。

你可以检查所有必要的数据, 然后返回到初始文件。速度非常快;你甚至不需要在文件之间切换!

但是, 正如我提到的, 弹出窗口是只读的, 因此, 如果你决定在检查User类时对其进行更改, 则需要另一个快捷键:Ctrl + Shift +B。

这将直接将你导航到课程。进行更改后, 可以使用Ctrl + E轻松返回到初始文件, 输入我们前面介绍的顺序。

列出当前类的所有方法

我每天使用的搜索功能的最后一个变体是”按类结构搜索”。有时PHP类很长, 很难找到特定的属性或方法。

如果在打开类文件的同时按Ctrl + F12, 则会看到一个包含类结构的弹出窗口:

按ctrl + f12将打开一个带有打开的类文件的文件结构的弹出窗口。

如果你开始输入方法名称, 则只会看到与你输入的模式匹配的方法:

如果你开始输入方法名称(例如" get"),则只会在ctrl + f12弹出窗口中看到匹配的方法。

试想一下, 你大约有100个方法(这不是一个好习惯, 但是你可能会在此类代码上运行), 并且需要经常在两个方法之间进行切换。使用普通搜索可能会让你发疯!

通过使用文件结构搜索, 每个开关大约需要进行五次击键。只需输入Ctrl + F12, 开始输入所需方法的名称, 然后按Enter, 即可进入其声明。

顺便说一句, Ctrl + F12并不是便捷的快捷方式, 因此你可能需要考虑将其更改为其他内容。就个人而言, 我使用Alt +R。

PhpStorm中有更多搜索方法, 但是这三种方法可以涵盖几乎所有日常搜索任务。

搜索功能回顾

  • 如果你需要搜索在多个文件中找到的内容, 请使用路径搜索中的查找(Ctrl + Shift + F), 然后尝试使搜索选项(过滤)尽可能具体。
  • 如果你需要快速查看类或方法的源代码, 请使用Ctrl + Shift + I并通过快速弹出窗口进行检查(如果需要对其进行编辑, 请通过Ctrl + Shift + B导航至声明)。
  • 如果你的类很大, 并且需要检查其结构或在方法之间快速切换, 请使用文件结构快捷方式, 默认情况下为Ctrl + F12。

所有基本语言结构的实时模板用法

尽管快捷方式使你可以快速编写和导航代码, 但还有一种方法可以进一步改进它-自动补全和实时模板。

基本的自动补全非常简单, 你当然应该了解它。

如果你开始输入类, 方法或变量的名称, 那么任何好的IDE都会为你显示可能的结尾列表。你可以选择其中的任何一个, 并避免键入结尾。

基本自动完成。

也就是说, 你可以使用实时模板走得更远。

在本部分中, 你将学习我在日常工作中使用的实时模板。我将它们分为三类:基本语言构造, 带长名称的函数和HTML块。

基本语言结构

不用说, 开发人员每天都会使用标准的语言结构(例如while, for, foreach), 如果每天使用多次, 那么每次从头开始键入它们的效率都非常低。因此, PhpStorm中有内置的实时模板。

对于某些改变生活的实时模板魔术, 请打开PhpStorm, 然后在编辑区域中键入forek, 然后按Enter。你会看到以下内容:

"前叉"实时模板。

PhpStorm用完整的foreach周期替换了模板, 并为所有必需的变量准备了存根。你只需要填写正确的变量名。

如果你按Ctrl + J, 则会看到当前支持的实时模板列表, 适用于代码的当前位置。你可以选择任何一个。

Ctrl + j会显示实时模板列表。

你可能已经注意到, 这里缺少一些非常常见的构造。例如, 我总是会错过一个实时模板, 而让我们来创建它吧!

依次导航到”设置”, “编辑器”, “实时模板”, 选择” PHP”, 然后在弹出窗口的右上方单击绿色的” +”:

你可以依次转到"设置","编辑器"和"实时模板"来添加新模板。

在”缩写”字段中填写” wh”, 在”说明”字段中填写” while(bool_expr){…}”。 “模板文字”字段应包含以下内容:

while($EXPR$)  {
    $END$
}

点击”模板文本”文本区域下方的”定义”链接, 然后从列表中选择” PHP”, 这样它就知道在什​​么情况下可以使用此模板。

现在, 让我们讨论一下它是如何工作的。

当你在编辑区域中输入wh, Enter时, 它将被模板文本替换。

光标将移动到第一个模板变量$ EXPR $(在本例中为$ EXPR $), 然后你可以键入任何表达式(例如$ i> 0), 然后再次按Enter。

之后, 光标将移至下一个变量(在此示例中只有一个), 依此类推。 $ END $是一个特殊变量, 它表示所有变量填充后光标应移动的位置。

我们只有一个变量, 因此在填充$ EXPR $之后, 它将立即移至$ END $, 我们将准备输入循环主体。

为你经常使用的所有语言构造创建自己的实时模板。预先花一些时间比每天花时间从头开始输入这些结构要好得多。

PHP函数

不幸的是, PHP在函数名称长且不一致的语言中享有盛誉。

好消息是你可以使用实时模板用短缩写代替它们。例如, 如果要正确检查数组中是否存在某些键, 则需要调用函数array_key_exists($ my_key, $ my_array)。

即使使用标准自动补全功能, 每次都键入非常繁琐, 因此只需为所有此类情况创建实时模板即可。

就个人而言, 我更喜欢array_key_exists为” ake”, 你可以选择其他任何一个。以下是创建” ake”实时模板的方法:

作者的array_key_exists模板的屏幕截图。

HTML块

最后, 但肯定不是最不流行的实时模板用法是处理HTML块。

如果你还没有使用实时模板, 那么我敢打赌, 你已经做了很多繁琐(基本上是无用的)工作, 创建了标准的HTML标记元素。实时模板通过执行上述操作来改变这种情况, 但”模板文本”字段是你的HTML。

使用PHPDocs避免错误

到目前为止, 你已经了解了PhpStorm的效率提示和技巧, 但是, 等等, 还有更多。效率不是唯一可以帮助的领域, 即使在程序第一次运行之前, 它也可以帮助避免错误。

开箱即用, PhpStorm会告诉你一些明显的错误。

例如, 如果你在声明后忘记了分号, 则会将其标记为红色, 但是该功能微不足道, 因此在此不再赘述。

有趣的是, 当PhpStorm通过PHPDocs提供所需的信息时, 它会告诉你更多复杂的错误。

理想情况下, 对于所有方法, PHPDoc规范对于你的团队都是强制性的, 并且应使其严格。再次考虑我们的User类的示例。假设我们有一个函数, 该函数返回一个User对象数组:

用户对象数组。

默认情况下, 它没有记录, 因此其他开发人员可能不知道返回值的类型, 并且可能不正确地使用它。

例如, 其他开发人员想要检索用户名列表。她认为, 由于某种原因, User对象具有getName()方法。但实际上并非如此, 因此开发人员犯了一个错误:

在此示例中,用户类没有getName()方法。

PhpStorm不会将其视为错误, 因为它对$ user变量一无所知。因此它不会被注意到, 而我们最终会遇到一个非常讨厌的错误。

第一种选择是仅打开严格类型, 这在PHP7中成为可能, 但是假设由于某些原因我们不能这样做。也许我们正在使用遗留代码。在这种情况下, 如果我们允许, PhpStorm将为我们提供帮助。

为此, 你需要为每个函数生成一个PHPDoc。通常, 这是一个好习惯, 它可以帮助你避免错误, 与开发人员相处, 甚至通过面试, 用人单位检查你的源代码。

要生成PHPDoc, 将光标移动到函数名称, 按Alt + Enter, 在弹出菜单中选择” Generate PHPDoc for function”项, 然后再次按Enter。

Alt + enter提供了为该函数生成PHPDoc的选项。

基本的PHPDoc模板将出现:

我们的User类的基本PHPDoc模板。

你可以看到PhpStorm猜测返回的值是一个数组, 但无法猜测它是一个User对象的数组, 因此让我们通过将” array”更改为” User []”来明确规定:

更新了PHPDoc以提供User []作为返回值。

现在, 我们已经告诉了PhpStorm它需要知道的关于方法的信息, 让我们回到getUserNames()方法调用:

既然已经定义了PHPDocs,我们可以看到getUserNames()无效。

现在, PhpStorm可以解析PHPDoc返回类型声明, 它可以为我们指出错误, 甚至可以提示到底是什么错误。 PhpStorm与PHPDocs结合可以使PHP成为一种非常严格的语言!惊人的结果!

PhpStorm不仅适合PHP开发人员

虽然所有主题都围绕PHP开发进行, 但是PhpStorm基于非常强大的IntelliJ平台, 这使得可以与PHP世界相去甚远的各种语言, 框架和技术堆栈都可以使用。

前端开发

即使你是后端开发人员, 也需要时时解决一些前端问题。它可以是对HTML标记的简单修复, 可以将参数添加到REST客户端, 用AngularJS编写, 等等。好消息是, 所有这些都可以在PhpStorm中完成。

基本经验法则是:开箱即用是否受支持。如果没有, 请尝试查找插件。

例如, 开箱即用地支持Javascript, CSS和流行的CSS预处理器, 例如LESS和SASS。 AngularJS支持很容易作为插件添加(安装路径与IdeaVim插件相同)。有了这种思路, 你将能够解决几乎所有可能的前端任务。

使用数据库

通常, 应用程序数据库是通过命令行或特殊工具(例如MySQL Workbench)进行管理的, 但是PhpStorm也可以在这里为你提供帮助。

只需点击屏幕右边缘的数据库, 你就会看到可用数据库的列表(最初为空)和一个具有自动补全功能的查询窗口, 例如常用的编辑区域, 因此非常方便。

PhpStorm支持几乎所有现代数据库。开箱即用地支持MySQL, PostgreSQL, Oracle数据库和SQLite, 而通过插件安装来支持MongoDB。

平均堆栈

最终也是最令人惊讶的非PHP示例是MEAN堆栈开发。

MEAN代表MongoDB, ExpressJS, AngularJS, Node.js。

这是一种趋势不断发展的技术栈, 几乎随处可见。它非常快速, 非常适合快速, 轻便的网络服务。

即使作为PHP开发人员, 我有时也会创建Node.js服务作为PHP项目的补充工具(例如websocket服务, 简单的chatbot后端等)。

你可能已经猜到, PhpStorm支持MEAN堆栈的所有组件, 因此, 每当需要创建MEAN堆栈项目时, 请记住不需要其他IDE。 PhpStorm将完美地完成这项工作。

PhpStorm的力量掌握在你的手中

利用PhpStorm的功能和本文介绍的关键技能, 你甚至可以在打字之前就提高效率并防止错误。

相关:语言服务器协议教程:从VSCode到Vim

赞(0)
未经允许不得转载:srcmini » 如何提高PhpStorm的效率:真正重要的IDE

评论 抢沙发

评论前必须登录!