PhpStorm 快捷键速查表 - PHP IDE 常用快捷键大全
PhpStorm 比普通编辑器强的关键在框架感知——它认识 Laravel/Symfony 的路由、模型与容器。本表按 JetBrains 键位组织 PHP 生成、框架跳转、数据库、调试/运行与质量检查快捷键。用框架导航键在路由、控制器、blade/twig 模板之间横跳,而不用去 grep。看陌生 PHP 代码库是日常开销的开发者收益最大。读完能不停顿完成跨模块跳转与重构。
典型使用场景
面向维护 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 + NCmd + Option + TCmd + Option + MCmd + Option + VCmd + Option + CCmd + PCmd + BCmd + UCmd + Option + BCmd + Option + HLaravel 专用 7
Cmd + Option + LCmd + Option + VCmd + Option + CCmd + Option + MCmd + Option + PCmd + Option + RCmd + Option + T数据库工具 6
Cmd + Shift + F2Cmd + Option + ReturnCmd + F9Cmd + Option + Shift + EnterCmd + UCmd + Option + N调试与运行 11
Ctrl + RCtrl + DCmd + F2F8F7Shift + F8Alt + F9Cmd + F8Cmd + Shift + F8Cmd + Option + RCmd + Option + E代码质量 9
F2Shift + F2Cmd + Option + Shift + ICmd + Option + Ctrl + ICmd + F1Cmd + Option + ICmd + Option + LCmd + Option + OCtrl + Option + Shift + NSymfony 专用 4
Cmd + Option + DCmd + Option + TCmd + Option + YCmd + Option + M参数矩阵
| 参数 | 作用 | 示例 |
|---|---|---|
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 + L | Laravel 路由跳转 | Cmd + Option + L |
Cmd + Option + V | Laravel 视图跳转 | Cmd + Option + V |
Cmd + Option + C | Laravel 控制器跳转 | Cmd + Option + C |
Cmd + Option + M | Laravel 模型跳转 | Cmd + Option + M |
Cmd + Option + P | Laravel 配置文件跳转 | Cmd + Option + P |
Cmd + Option + R / T | Laravel 翻译 / 模板跳转 | Cmd + Option + R |
Cmd + Shift + F2 | 打开数据库工具窗口 | Cmd + Shift + F2 |
Cmd + Option + Return | 新建查询控制台 | Cmd + Option + Return |
Cmd + F9 | 执行选中的 SQL | Cmd + F9 |
Cmd + Option + Shift + Enter | 执行控制台里全部 SQL | Cmd + 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 + D | Symfony 路由跳转 | Cmd + Option + D |
Cmd + Option + T | Symfony 服务跳转 | Cmd + Option + T |
Cmd + Option + Y | Symfony 模板跳转 | Cmd + Option + Y |
Cmd + Option + M | Symfony 模型跳转 | 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确认当前行代码是否真的有问题
F2会跳到下一个错误位置;若跳转不到,说明该行没有检查项级别的错误。
2看清某个检查项到底在抱怨什么
Cmd + Option + Shift + I弹出检查项的详细说明与建议修复方式,比盲目改代码省时间。
3沿继承关系定位真正的实现
Cmd + Option + B跳转到实现类;若一个接口有多个实现,用 Cmd + Option + H 先看完整层次。
4在框架文件之间快速横移
Cmd + Option + LLaravel 项目下跳到路由文件;Symfony 项目用 Cmd + Option + D 走同一位置。
5快速验证一段逻辑的正确性
Alt + F9在调试会话中运行到光标行停下,比逐次 F7 更快定位到出错位置。
6提交前统一代码风格
Cmd + Option + L格式化当前文件;改完整个项目后配合 Cmd + Option + O 清理 import。
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日,内容持续校对官方文档。