诚实的小猴子

提升效率(或让编码变得愉悦)的phpstorm常用功能

写在开头

当初入行的时候写 ASP 用的是 DreamWeaver ,后来转到 PHP 以后在网上找到了 phpstorm ,用了一段时间以后就彻底喜欢上这款工具了。
除了需要电脑配置高点意外,其它的各种功能都让我的开发过程变得愉悦。并且 phpstormjetbrains 这家公司开发的,他们家的还有很多其它语言的 IDE,操作快捷键那些都是可以照搬,用熟悉一款以后,当需要其它语言来开发的时候也可以快速上手让 IDE 帮我们完成很多事情。

功能列举(顺序不分先后)

下面我就来列举,一些我在编码过程中,一些给我带来便捷或者好玩儿的 phpstorm 功能。

导航

double-shift

开发过程中经常会遇到需要打开某一个文件修改,在不适用快捷键的情况下一般都是用鼠标去目录树点开对应的文件。
当文件少的时候还好,但是文件比较多目录比较深的时候找起来还是比较麻烦,更好的办法是让 phpstorm 来帮我们找。

  • 万能的 Double Shift

这个应该是我使用 phpstorm 最开始很喜欢用的一个功能了(因为其它的我也不知道呀😂)。
只需要按两下 shift 键就可以呼出搜索框,搜索我们想要的关键字。这个搜索可以搜索很多东西。
比如你输入的可以是文件名,这样就可以不用鼠标点击打开文件了;输入的也可以是方法名,或者函数名

  • 通过类名查找

Double Shift 虽然还是挺好用的,但是当我只想找根据类名找的时候用它会出来很多干扰我的选择项,就像这样:

因为什么类型的结果都有,我需要移动方向键来选择到我的结果,然而要是结果是这样,我就不用移动方向键就能得到我要得结果了。

MacOS Windows
⌘ + O Ctrl + N
  • 通过文件名查找

find-replace

MacOS Windows
⌘ + ⇧ + O Ctrl + ⇧ + N

当我们需要打开某一个文件的时候这个方法很有用,并且可以通过添加 / 来表示目录,这样可以将光标直接定位到该目录在项目目录树的位置。
再比如一个项目中有多个 IndexController,一个在 A 目录下,一个在 B 目录下,可以通过输入 A/IndexController 可以找到 A 目录下的那个文件, B 目录那个一样的道理。

  • 通过记号(Symbol)查找

MacOS Windows
⌘ + ⌥ + O Ctrl + Alt + ⇧ + N

当需要通过某一个函数名来找到对应的文件时候可以考虑使用此功能。
Home::index 这个表达式可以搜索到 HomeControllerindex 方法。
testMethodName 或者这样可以匹配到所有这个方法或函数的文件。

这个搜索有不仅限于函数名, 也能匹配类名,类属性名,以及常量名。如果配置了数据库链接甚至可以匹配到表名,直接打开对应的表。

查找/替换

虽然这个只是一个很普通的功能,但是配合上正则表达式真的可以发挥大作用。

操作 MacOS Windows
查找 ⌘ + F Ctrl + F
替换 ⌘ + R Ctrl + R
全局查找 ⌘ + ⇧ + F Ctrl + ⇧ + F
全局替换 ⌘ + ⇧ + R Ctrl + ⇧ + R

工作中经常会用到 查找/替换
举个例子比如有个这样的场景,我需要把某个项目(或者目录)的所有html文件里面形如 {$xxxxxx}, {:xxxxxx},外面再套层花括号,这种情况下如果一个个去改肯定是不可能的,需要用到全局查找替换。

配合上正则表达式和文件名的后缀过滤,可以轻松搞定,如图:
①勾选上启用正则模式
②选择*.html表示在html进行操作
③限制某一个目录(或者也可以直接选择 In Project 从真个项目中操作)。

find-replace

主动呼出代码提示

当我们敲代码的时候会出来自动提示,这时可以选择提示里面的某一个选项。但是有时候我想在不删除我的代码重新敲的情况下呼出这个提示就可以用这个快捷键了。

MacOS Windows
⌃ + Space Ctrl + Space

这本来是个很好用的功能,但是它默认的快捷键和系统输入法切花的冲突了导致无法使用。
可以在设置里面 Keymap->Main menu->Code->Completion->Basic 设置一个不冲突的快捷键就行了我设置的是 ⌃ + ⇧ + C

测试代码片段

工作中我经常会遇到,需要写一段测试代码,比如我现在有段序列化的字符串,我想发序列化看看里面的内容,并对内容做点修改,然后再序列化回去。
而我又不想把这个代码写到项目文件里面去,这个时候 phpstorm 这个乱写一通的这个功能就派上用场了。按住一下组合键呼出:

MacOS Windows
⌘ + ⇧ + N Ctrl + Alt + Shift + Insert

写好代码直接运行用运行快捷键运行就可以快速的测试我们的代码了。

MacOS Windows
⌃ + ⇧ + R Ctrl + Shift + F10

显示意图行动和快速修复

MacOS Windows
⌥ + ↩ Alt + Enter

phpstorm 当中按住以上组合键可以快速弹出意图动作选项,比如我可以通过此方式快速的创建一个不存在的方法,移除掉没有被使用的命名空间,生成方法注释头(不仅限于这些操作,取决于按下组合键时光标的位置)。

实时模板(Live template)

MacOS Windows 操作
⌘ + ⌥ + J Ctrl + Alt + J 用模板包围
⌘ + J Ctrl + J 插入模板

自带模板

phpstorm 针对不同的文件类型已经预定义了一些模板,通过按上面的快捷键呼出以后,然后输入相应的缩写代码来插入模板。
比如在php类文件中,pubf 可以生成公有的方法, prof 生成保护方法,prif 生成私有方法等等。

自定义模板

我有时候需要记录一下一段代码的执行时间到日志,每次都写觉得比较麻烦,所以我准备定义一个模板。
Settings->Editor->Live Templates

①、点击新增按钮
②、填入缩写,和描述语
③、填入模板内容。
④、声明模板可以使用的文件类型,这里勾选php文件就行。

当中 $XXX$ 都是占位符, $SELECTION$ 最终会被替换成选中的代码块,$VAR0$ 也是个占位符,到时候光标会自动定位到这里要求输入。
如果需要手动输入的不止一个可以用 $VAR0$, $VAR1$ 依次排下去。

最终效果:

该功能不仅限于PHP,其它任何文件类型都可以使用。比如 thinkphp 模板引擎里面的 volist 我们可以这样申明。

<volist name="$VAR0$" id="$VAR1$">
$SELECTION$
</volist>

最终效果:

用模板包围和插入模板的区别在于声明的时候是否使用了 $SELECTION$ 占位符。

文件选项卡间切换

我们在编码(或阅读源码)的时候经常会同时打开很多个文件,需要在各个文件间切换,如果不想每次都拿鼠标点可以考虑以下几个快捷方式。

  • 选中上(下)一个选项卡

当打开了很多个文件的时候可以按住下面的组合键来在文件间切换。

MacOS Windows
⌘ + ⇧ + [ Alt + →
⌘ + ⇧ + ] Alt + ←
  • 显示最近打开过的文件

选项卡间的切换可能并不是那么快捷,有可能中间会经历好几个不是我想要切换到的选项卡。
这种情况可以考虑使用显示最近打开过的文件来跳到特定的文件。

MacOS Windows
⌘ + E Ctrl + E

  • 回退(前进)

有时候其实我们并不需要的是在文件间大跨度切换,而是需要回到(前进)我刚刚光标所在的地方。
这时就可以使用如下操作。

MacOS Windows
⌘ + [ Ctrl + Alt + →
⌘ + ] Ctrl + Alt + ←

windows 下面这个快捷键不知道是不是冲突了,不生效可以尝试修改下成其他的。

版本控制系统

如果你使用了 phpstorm 自带的版本控制系统的图形界面,记住这两个快捷键可能会对你的效率有所提升。

MacOS Windows 操作
⌘ + K Ctrl + K 提交
⌘ + T Ctrl + T 更新
⌘ + ⇧ + T Ctrl + Shift + T 推送(git)

上面除了推送的只对git有效,其它两个 svngit 都是一样的快捷键。

分享个炫酷的插件(active-power-mode)

可以在File->Settings->Plugins里面安装插件,然后重启。

最终效果大概是这样,纯属好玩儿,看个人喜欢了,我用了下就禁用了,看着眼花😂。

结束语

以上是我使用的一些心得,大家如果有在使用过程中用到觉得不错的功能,欢迎补充~