PhpStorm 快捷键速查表 - PHP IDE 常用快捷键大全

PhpStorm 比普通编辑器强的关键在框架感知——它认识 Laravel/Symfony 的路由、模型与容器。本表按 JetBrains 键位组织 PHP 生成、框架跳转、数据库、调试/运行与质量检查快捷键。用框架导航键在路由、控制器、blade/twig 模板之间横跳,而不用去 grep。看陌生 PHP 代码库是日常开销的开发者收益最大。读完能不停顿完成跨模块跳转与重构。

开发工具·共 47 条命令·最后更新 2026-07-21

典型使用场景

面向维护 PHP 项目的开发者,尤其是同时要写 Laravel 或 Symfony、并且想省掉在编辑器、数据库客户端和调试器之间来回切换的人。表内按「PHP 专用 / Laravel 专用 / 数据库工具 / 调试与运行 / 代码质量 / Symfony 专用」分组,先用 Cmd+N 生成代码、Cmd+Option+T 包裹、提取方法与变量这几组把重复劳动交给 IDE;再用 Cmd+B、Cmd+U、Cmd+Option+B 沿继承链跳转,快速摸清不熟悉的类结构。框架侧靠 Laravel 与 Symfony 各自的跳转键直接在路由、视图、控制器、模型之间横移,配置文件和翻译文件也能一键直达。数据库工具窗口支持直接连库执行 SQL、看表结构,不必再开第三个工具。调试时 Ctrl+D 进断点模式,F7/F8/Shift+F8 单步,Alt+F9 跑到光标;收尾用格式化、优化 import 和最近更改做全局清理。

PHP 专用 10

Cmd + N
生成代码(构造函数、getter/setter、PHPDoc)
Cmd + Option + T
用代码包裹(if/for/try/PHPDoc)
Cmd + Option + M
提取方法
Cmd + Option + V
提取变量
Cmd + Option + C
提取常量
Cmd + P
参数信息(查看函数参数)
Cmd + B
跳转到声明
Cmd + U
跳转到父类/接口
Cmd + Option + B
跳转到实现
Cmd + Option + H
查看类型层次

Laravel 专用 7

Cmd + Option + L
Laravel 路由跳转
Cmd + Option + V
Laravel 视图跳转
Cmd + Option + C
Laravel 控制器跳转
Cmd + Option + M
Laravel 模型跳转
Cmd + Option + P
Laravel 配置跳转
Cmd + Option + R
Laravel 翻译跳转
Cmd + Option + T
Laravel 模板跳转

数据库工具 6

Cmd + Shift + F2
打开数据库工具窗口
Cmd + Option + Return
新建查询控制台
Cmd + F9
执行选中 SQL
Cmd + Option + Shift + Enter
执行所有 SQL
Cmd + U
查看表结构
Cmd + Option + N
新建表/视图/存储过程

调试与运行 11

Ctrl + R
运行当前配置
Ctrl + D
调试当前配置
Cmd + F2
停止
F8
单步跳过
F7
单步进入
Shift + F8
单步跳出
Alt + F9
运行到光标
Cmd + F8
切换断点
Cmd + Shift + F8
查看所有断点
Cmd + Option + R
恢复程序
Cmd + Option + E
计算表达式

代码质量 9

F2
下一个错误
Shift + F2
上一个错误
Cmd + Option + Shift + I
查看检查描述
Cmd + Option + Ctrl + I
快速文档
Cmd + F1
显示错误描述
Cmd + Option + I
自动缩进
Cmd + Option + L
格式化代码
Cmd + Option + O
优化 import
Ctrl + Option + Shift + N
最近更改

Symfony 专用 4

Cmd + Option + D
Symfony 路由跳转
Cmd + Option + T
Symfony 服务跳转
Cmd + Option + Y
Symfony 模板跳转
Cmd + Option + M
Symfony 模型跳转

参数矩阵

参数作用示例
Cmd + N生成代码:构造函数、getter/setter、PHPDoc 等Cmd + N
Cmd + Option + T用 if / for / try / PHPDoc 包裹选中代码Cmd + Option + T
Cmd + Option + M提取方法Cmd + Option + M
Cmd + Option + V提取变量Cmd + Option + V
Cmd + Option + C提取常量Cmd + Option + C
Cmd + P查看函数参数信息Cmd + P
Cmd + B跳转到声明Cmd + B
Cmd + U跳转到父类 / 接口Cmd + U
Cmd + Option + B跳转到实现类Cmd + Option + B
Cmd + Option + H查看类型层次Cmd + Option + H
Cmd + Option + LLaravel 路由跳转Cmd + Option + L
Cmd + Option + VLaravel 视图跳转Cmd + Option + V
Cmd + Option + CLaravel 控制器跳转Cmd + Option + C
Cmd + Option + MLaravel 模型跳转Cmd + Option + M
Cmd + Option + PLaravel 配置文件跳转Cmd + Option + P
Cmd + Option + R / TLaravel 翻译 / 模板跳转Cmd + Option + R
Cmd + Shift + F2打开数据库工具窗口Cmd + Shift + F2
Cmd + Option + Return新建查询控制台Cmd + Option + Return
Cmd + F9执行选中的 SQLCmd + F9
Cmd + Option + Shift + Enter执行控制台里全部 SQLCmd + Option + Shift + Enter
Cmd + U在数据库工具里查看表结构Cmd + U
Cmd + Option + N新建表 / 视图 / 存储过程Cmd + Option + N
Ctrl + R运行当前运行配置Ctrl + R
Ctrl + D以调试模式启动当前配置Ctrl + D
Cmd + F2停止运行或调试进程Cmd + F2
F8 / F7单步跳过 / 单步进入F7
Shift + F8单步跳出当前方法Shift + F8
Alt + F9运行到光标所在行Alt + F9
Cmd + F8切换断点Cmd + F8
Cmd + Shift + F8查看所有断点Cmd + Shift + F8
Cmd + Option + R恢复被暂停的程序Cmd + Option + R
Cmd + Option + E在调试时计算表达式Cmd + Option + E
F2 / Shift + F2跳到下一个 / 上一个错误F2
Cmd + Option + Shift + I查看检查项的详细描述Cmd + Option + Shift + I
Cmd + Option + Ctrl + I快速文档Cmd + Option + Ctrl + I
Cmd + F1显示当前错误描述Cmd + F1
Cmd + Option + I自动缩进当前代码块Cmd + Option + I
Cmd + Option + L格式化代码(可配 PSR-1/2/12)Cmd + Option + L
Cmd + Option + O优化 import,去掉未使用引用Cmd + Option + O
Ctrl + Option + Shift + N查看最近更改Ctrl + Option + Shift + N
Cmd + Option + DSymfony 路由跳转Cmd + Option + D
Cmd + Option + TSymfony 服务跳转Cmd + Option + T
Cmd + Option + YSymfony 模板跳转Cmd + Option + Y
Cmd + Option + MSymfony 模型跳转Cmd + Option + M

易错点与避坑指南

现象Laravel 路由、视图、控制器跳转快捷键按了没反应

原因Laravel 插件未启用,或项目没有被识别为 Laravel 项目结构

处置安装并启用 Laravel 插件,确认项目根目录存在 Laravel 入口文件后再使用这些跳转键

现象在数据库工具里连不上库,提示连接失败

原因数据源未配置或配置与项目实际使用的数据库环境不一致

处置打开数据源设置核对主机、端口、库名与凭据,与项目配置文件中的连接信息对齐

现象按 Ctrl+D 后进程一直跑不完,断点也没停

原因所走的代码路径没有命中任何断点,或当前运行环境未挂上调试器

处置用 Cmd+Shift+F8 确认断点存在且启用,再确认调试环境配置正确,必要时改用 Alt+F9 跑到光标逐段确认

现象提交前才发现大段代码缩进不一致,diff 很脏

原因编辑过程中没有触发自动格式化,不同文件沿用各自的缩进风格

处置保存时启用自动格式化,或提交前对改动文件执行 Cmd + Option + L 并按项目 PSR 规范配置

现象编辑器越来越慢,索引或代码提示明显延迟

原因项目里有体积很大的目录(vendor、日志、上传文件)被纳入索引范围

处置把这些目录标记为 Excluded,让 IDE 只索引真正参与开发的代码

现象import 列表里堆着一堆没用到的类,代码检查持续报警

原因重构或删代码后未使用的引用没有清理

处置执行 Cmd + Option + O 优化 import,再配合 F2 逐个清掉剩余检查项

现象想找某个方法实现,却总跳到接口或抽象类上

原因Cmd + U 走的是父类方向,实际实现需要反向跳转

处置改用 Cmd + Option + B 跳转到实现类,或用 Cmd + Option + H 直接看类型层次

排障路径

  1. 1确认当前行代码是否真的有问题

    F2

    会跳到下一个错误位置;若跳转不到,说明该行没有检查项级别的错误。

  2. 2看清某个检查项到底在抱怨什么

    Cmd + Option + Shift + I

    弹出检查项的详细说明与建议修复方式,比盲目改代码省时间。

  3. 3沿继承关系定位真正的实现

    Cmd + Option + B

    跳转到实现类;若一个接口有多个实现,用 Cmd + Option + H 先看完整层次。

  4. 4在框架文件之间快速横移

    Cmd + Option + L

    Laravel 项目下跳到路由文件;Symfony 项目用 Cmd + Option + D 走同一位置。

  5. 5快速验证一段逻辑的正确性

    Alt + F9

    在调试会话中运行到光标行停下,比逐次 F7 更快定位到出错位置。

  6. 6提交前统一代码风格

    Cmd + Option + L

    格式化当前文件;改完整个项目后配合 Cmd + Option + O 清理 import。

  7. 7核对即将提交的改动范围

    Ctrl + Option + Shift + N

    打开最近更改视图,确认没有把调试代码或无关文件带进提交。

命令示例

光标停在方法名上直接跳到接口声明

// 光标停在 $user->getName() 的 getName 上 // 按 Cmd + B(macOS) // 视图直接跳到 UserInterface::getName() 的声明处 // 再按 Cmd + U 跳到父类/接口实现

在几百个类的项目里,靠文件树翻找声明几乎不可行。Cmd + B 到声明、Cmd + Option + B 到实现、Cmd + Option + H 看类型层次,这三个连起来能替代大部分 IDE 导航需求。

用代码包裹裸 if/try,顺带生成 PHPDoc

// 选中这段代码: // $result = $repo->find($id); // return $result?->name; // 然后按 Cmd + Option + T,选择 if 或 try // 若光标在函数名上,同一个菜单可生成 PHPDoc

「用代码包裹」比手动补大括号可靠得多:它自动缩进且不留错位的花括号。在函数签名上使用时还会把参数类型和返回类型填进 PHPDoc 模板。

输出

try {
    $result = $repo->find($id);
    return $result?->name;
} catch (\Throwable $e) {
}

在 SQL 控制台执行选中片段而不是整文件

// 选中 SQL 片段后按 Cmd + F9(执行选中 SQL) // 按 Cmd + Option + Shift + Enter 执行所有 SQL // 按 Cmd + Shift + F2 打开数据库工具窗口

迁移文件里常有多条语句,全量执行会重复建表报错。Cmd + F9 只跑选区,配合数据库工具窗口的表结构查看(Cmd + U)可以边写边核对字段。

断点调试一段只有可疑的查询

// Cmd + F8 在 $stmt 行打点 // Ctrl + D 开始调试,Alt + F9 运行到光标 // F7 步入方法内部,Shift + F8 跳出,Cmd + Option + E 计算表达式

「这个变量到底什么时候被改的」用打印语句往往抓不到调用栈。Cmd + Option + E 能在断点处现场算任意表达式,Cmd + Shift + F8 列出所有断点避免调试完忘记清理。

在 Laravel 项目里用 Cmd + P 定位路由到控制器

// 光标在 routes/api.php 的 Route::get 那一行 // 按 Cmd + P 查看参数信息,或 // 按 Cmd + Option + L 跳转 Laravel 路由 // Cmd + Option + C 跳控制器,M 跳模型,V 跳视图

Laravel 系列的跳转快捷键把「路由 → 控制器 → 模型 → 视图」这条链变成按键直达。Symfony 项目对应的是 Cmd + Option + D/T/Y/M(路由/服务/模板/模型)。

常见坑与注意事项

  • 「搜索 everywhere」会把 node_modules、缓存和生成代码一起算进去,结果为空或噪声极多;先在 Settings → Directories 里把 vendor、node_modules、storage 标为 Excluded 再搜。
  • 忘记删断点就会在后续运行中莫名中断,调试「莫名其妙停住」时先用 Cmd + Shift + F8 查看所有断点,或用 Alt + F9 直接运行到光标跳过前面的断点。
  • 在数据库工具窗口执行无 where 条件的 UPDATE/DELETE 会全表生效且通常不可撤销,IDE 不提供事务回滚点,执行前务必先 SELECT 确认影响行数。
  • PHP 7 与 PHP 8 的动态属性、null 传参行为不同,IDE 索引对应的 PHP 版本与 CLI 实际版本不一致时,Cmd + B 跳转和类型提示会给出看似合理的错误结果。
  • Ctrl + R 运行与 Cmd + Option + L 格式化会同时改写工作区文件,长流程调试前先提交一次,否则格式化后的差异会污染问题定位。
  • Cmd + N 的生成模板依赖代码里的注解与命名,缺 PHPDoc 时生成的 getter/setter 类型可能全是 mixed,需要生成后手工补全类型声明。

提示

  • PhpStorm 基于 IntelliJ 平台,大部分快捷键与 WebStorm、IDEA 相同。
  • Cmd + N 生成代码时,可以选择构造函数、getter/setter、PHPDoc 等,比手写快很多。
  • Laravel 插件(Laravel Plugin)提供路由、视图、控制器的快速跳转。
  • 数据库工具可以直接连接 MySQL、PostgreSQL,不用切换到 Navicat。
  • Xdebug 配置好后,Ctrl + D 启动调试,F7/F8 单步调试 PHP 代码。
  • Cmd + Option + L 格式化代码时,可以在设置中配置 PSR-1/PSR-2/PSR-12 规范。

常见问题

Cmd + Option + L 和 M 既是格式化/重构又是框架跳转,冲突了怎么办?

确实存在重名:Cmd + Option + L 在代码质量区是「格式化代码」(可配置 PSR-1/PSR-12),在 Laravel 区和 Symfony 区却是路由/模板跳转;Cmd + Option + M 既是「提取方法」,又是 Laravel/Symfony 的模型跳转;Cmd + Option + R 既是恢复程序,又是 Laravel 翻译跳转。解决办法是去 Settings 的 Keymap 里搜这个组合,把不想用的那条 Clear 掉再把框架那条 Add 上,或者改成不冲突的键。别硬记两套——记住 Cmd + N、Cmd + P、Cmd + B、Cmd + U、Cmd + Option + B 这几个跨框架通用的就够了。

构造函数、getter/setter、PHPDoc 都要手写太慢,如何快速生成?

在类体内或方法上按 Cmd + N 打开生成菜单,里面列出构造函数、getter/setter、PHPDoc、equals/hashCode 等候选,选中即可生成骨架。生成后通常还要两步收尾:按 Cmd + Option + T 用代码包裹(if、for、try、PHPDoc),可以把光标所在的语句快速套进控制结构或补上 PHPDoc 注释;再按 Cmd + Option + I 自动缩进、Cmd + Option + L 按项目配置的 PSR 规范格式化、Cmd + Option + O 优化 import。提交前跑一遍 F2 跳到下一个错误,能把遗漏的导入或语法问题一次揪出来。

调试时 F7、F8、Shift + F8、Alt + F9 应该怎么按?

顺序是「进、跳、出一口气跑到位」:F7 单步进入,会走进当前行调用的函数内部;F8 单步跳过,把整行执行完但不进函数体;Shift + F8 单步跳出,从当前函数直接返回上一层调用者。Alt + F9 运行到光标,等于在光标所在行自动下一个断点然后全速冲过去,调试一个长循环时不必一路按 F8。配套动作:Cmd + F8 切换断点,Cmd + Shift + F8 查看所有断点,Cmd + Option + E 计算表达式,在暂停的当口求一个字段或调一个函数看结果。Xdebug 配好后用 Ctrl + D 启动调试而不是 Ctrl + R。

Cmd + B、Cmd + U、Cmd + Option + B、Cmd + Option + H 四个跳转怎么分工?

这是读陌生代码库的四级纵深:Cmd + B 跳到当前符号的声明处,最常用;Cmd + U 跳到父类或接口定义,排查继承链时用;Cmd + Option + B 跳到接口的实现类,看一个抽象方法到底被谁落地;Cmd + Option + H 拉出完整的类型层次,把父类、子类、接口一次性铺开。不想跳转时,Cmd + P 直接显示当前函数的参数信息(参数名、类型、默认值),Cmd + Option + Ctrl + I 弹快速文档。数据库侧也有一组:Cmd + U 在 SQL 控制台里是查看表结构。

为什么不再开 Navicat,而是直接用 IDE 的数据库工具?

PhpStorm 内置的数据库工具可以直接连 MySQL、PostgreSQL,省掉在 IDE 和客户端之间来回切窗口、反复改连接串的麻烦。操作集中在快捷键上:Cmd + Shift + F2 打开数据库工具窗口,Cmd + Option + Return 新建查询控制台,Cmd + F9 只执行选中 SQL(调试单条语句最快),Cmd + Option + Shift + Enter 执行全部 SQL,Cmd + U 查看表结构,Cmd + Option + N 新建表/视图/存储过程。调试 Laravel/Symfony 时好处尤其明显:代码里的查询和结果集能并排看,改完代码立刻验证,不用切到外部客户端。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们