玩转 PhpStorm 系列(二):通过快捷键实现代码全局导航和上下文导航

概述

在日常使用代码编辑器的过程中,频率非常高的一个需求就是能够快速全局导航到指定类、文件、方法、行,在 PhpStorm 中可以通过两种方式来实现这种导航。

一种是在菜单栏中点击 Navigate,然后在下拉框选择对应的全局导航,Class 代表类、File 代表文件、Symbol 代表符号/标记(可用于导航到指定变量、方法)、Line 代表行(需要在特定文件中操作)。

-w797

另一种是通过快捷键,上面的菜单栏下拉框导航选项右侧已经标注了对应的快捷键,下面我们就可以快捷键为例在 Mac 系统中进行演示(Windows 操作类似,就是快捷键有差异)。

导航到类、接口、Trait

打开一个新安装的最新版 Laravel 项目,以自带的 User 类为例,要导航到这个类,可以通过快捷键 Command + O 打开导航窗口,在输入框输入 User 进行类名的全局模糊匹配,然后在下拉选项中选中要导航的类:

-w838

就会打开包含 User 类的文件了:

-w731

导航到其他类也是一样,这里不重复演示了。除了项目代码,还可以导航到 Composer 管理的 vendor 库中的所有第三方扩展包代码,比如我们想要查看 User 的父类 Model

-w837

另外,导航到指定接口和 Trait 共用了导航到指定类的功能,比如我们在类导航输入框中输入 Authenticatable,则会列出对应的接口和 Trait:

-w833

导航到文件

在遵循 PSR-4 自动加载规范的现代 PHP 项目中,类名和文件名是一致的,所以导航到类也就意味着导航到了对应的文件,但对于一些不包含任何类的 PHP 文件,还是需要通过导航到文件功能进行跳转,比如应用初始化/启动文件、配置文件、路由文件以及定义 PHP 辅助函数的文件等。

我们可以通过快捷键 Shift + Command + P 文件打开导航到文件的操作界面,假设我们想要打开 Laravel 项目的数据库配置文件,可以在输入框输入 database 进行文件名的全局模糊匹配,然后在下拉框选中我们期望打开的文件:

-w835

即可跳转到对应的 database.php 配置文件:

-w1049

如果想要打开定义 Laravel 自带辅助函数的 helpers.php 文件,操作方法完全一样,只需在导航输入框中输入对应文件名即可:

-w829

导航到属性、方法

除了类名和文件之外,PhpStorm 还支持更细粒度的 PHP 属性和方法导航,我们通过快捷键 Option + Command + O 打开对应的导航操作界面,假设我们想要在应用代码的 Kernel 类中新增一个全局中间件,可以在输入框输入 middleware 跳转到到这个属性中进行设置:

-w828

-w884

该方法也适用于变量名的全局导航:

-w832

导航到指定的类/Trait成员方法或者独立的 PHP 函数也是在同一个操作界面操作,比如我们想要查看 Laravel 自带的分页方法底层是如何实现的,可以在输入框输入 paginate,然后选择我们想要查看的方法实现即可:

-w836

再比如,我们想要查看 Laravel 自带的 view 函数是如何实现的,在输入框输入 view 并选中要导航的方法即可:

-w830

跳转到行、列

最后,在已打开的当前文件中,可以通过 Command + L 打开行列导航操作界面,输入要导航到的行号、列号即可,其中行和列通过「行号:列号」进行区分和解析:

-w358

列号一般不设置,默认值为 1

在图形化 UI 界面中,通常跳转到指定行、列的需求不大,我们可以通过鼠标和触摸屏快速定位到指定位置。

汇总导航

针对类、文件、属性、方法的导航,除了通过上述方式使用各自独立的快捷键和操作界面进行导航外,在 PhpStorm 中,还可以通过 Shift + Shift 快捷键(连按两次 Shift 键)打开汇总导航操作界面(对应的功能叫做 Search Everywhere),一次输入,就可以全局匹配出所有相关的类、文件、属性、方法:

-w837

是不是非常方便?之所以叫做「Search Everywhere」,是因为除了这些导航功能之外,还可以通过 Actions 对 PhpStorm 系统设置进行快速定位(这个我们后面会单独介绍),换言之,你想要搜索的一切都可以通过这个输入框完成,也正因为这个原因,该功能对应的快捷键才能位于 PhpStorm 默认开机界面的榜首:

-w585

日常我们要做任何操作,不管是找文件、找代码,还是进行系统设置,都可以通过 Shift + Shift 呼出导航界面进行快速跳转,它会成为你日常使用 PhpStorm 最频繁的快捷键操作。

上下文导航

以上导航都是全局导航,如果是在某一段具体的代码片段中,我们想要进行上下文导航,以 User 模型类的 posts 方法为例:

public function posts()
{
    return $this->hasMany(Post::class, 'user_id');
}

如果我们想要查看 hasMany 方法对应的实现代码,可以按住 Command 键(Windows 下对应的是 Ctrl 键),然后鼠标/触摸屏点击 hasMany 方法,即可跳转到对应的方法实现代码:

-w770

看完之后,想要快速切换回调用它的 posts 方法,通过快捷键 Command + [(切到操作序列中上一步代码的位置)即可,如果想再看看 hasMany 方法实现,通过 Command + ](切到操作序列中下一步代码的位置)即可快速切换。

在 Laravel 项目中进行 Facade 类的上下文导航,可以参考这篇教程:Laraval IDE 自动补全助手:Laravel IDE Helper Generator

(全文完)

本系列教程会录制视频演示并发布到学院君微信视频号,欢迎扫码关注:

学院君视频号

上一篇: 玩转 PhpStorm 系列(一):主题切换、自定义和第三方主题安装

下一篇: 玩转 PhpStorm 系列(三):第三方插件的安装、使用和卸载