PhpStorm使用技巧分享
为什么不使用 VIM 或 Sublime,因为它们实质是 Editor,而非 IDE。
最好的IDE:Microsoft Visual Studio, JetBrains 系列。JetBrains的IDE系列包括:
- PhpStorm(PHP)
- WebStorm(JavaScript, ...)
- IntelliJ IDEA(Java)
- RubyMine(Ruby)
- PyCharm(Python)
- AppCode(Objective-C,C,C++)
- CLion(C,C++)
此分享同样适用于JetBrains的其它IDE。
一、 VCS 与 PhpStorm 的整合操作(Mercurial,同样适用于Git、SVN)
TortoiseHg 是 Mercurial 的 GUI 客户端。Mercurial 包含下列基本概念:
- 【Init】 初始化,创建一个空的仓库。
- 【Clone】 复制仓库,来源可以是一个http或ssh链接表示的仓库,也可以是本地仓库。
- 【Commit】 提交,即接受所有的改动将当前版本作为最新版本(也叫tip)。只提交的本地仓库,而且本地仓库会详细记录所有的变动(称为变更集或改动集)。多次提交并不会影响远程仓库。
- 【Revert】 恢复,即撤销所有的改动,恢复到未更改的状态。
- 【Pull】 拉取,将雅远程仓库有而当前仓库没有的变更集“下载”到本地仓库。不过这只是添加了变更集,本地文件并不会改动。
- 【Update】 更新,当获取了其他变更集,更改以保持和远程仓库一致。
- 【Push】 推送,将当前仓库的变更集“上传”到其他仓库去。
-
【Merge】 合并。当一个文件同时被多次修改,并存放在多个仓库时,要获得一个统一的版本就需要合并。
更多关于 Mercurial 和 TortoiseHg 的介绍,参见 TortoiseHg 学习笔记,Mercurial 有哪些优点?适合怎样的开发者或团队使用?
PhpStorm 提供了与 IDE 整合的 VCS 功能。就公司项目而言,项目已包含源码管理的配置信息,可直接被 PhpStorm 识别为 Mercurial 项目。功能主要位于右键菜单 Mercurial 项(与菜单栏 VCS > Mercurial
功能基本相同),以及 Changes 面板(通过菜单栏 View > Tool Windows > Changes
打开)。
功能与 TortoiseHg 相似,但与 IDE 整合得更好。尤其是 History 和 Change 系列,特色功能如下:
- 在目录、文件、方法、字段上右键
Mercurial > Show History / Show History for Method|Field
,可查看目录、文件、方法、字段的历史版本(实际显示时仅显示存在差异的版本)。 - 在文件上右键
Mercurial > Compare with
,可与此文件的任意历史版本比较。功能与 Beyond Compare 3 各有所长。 - Changes 面板上包含了当前工作区所有未提交的文件管理操作(若公司所有项目以单个Project打开,可同时管理多个Repo),可方便的进行比对、重置、提交等操作。
二、 智能(Intelligent)
JetBrains系列产品的一大特色在于优秀的代码分析功能,其从语法、惯用写法、常用库推测等角度尽可能的理解代码结构和行为,为代码编辑、智能提示、代码重构等提供支持。(不仅仅是语法着色和字段、成员提示。没错,我就是在黑Eclipse)
尽管PHP和JS是弱类型/动态类型语言,使得分析结果不如强类型/静态类型语言完美。但合理使用功能可提升开发效率和避免手误。
在此列出部分实用功能(皆位于右键菜单上),抛砖引玉。如下:
-
Find Usages 查找用例
在类、方法、字段、变量等元素上查找此其在项目中所有被使用的场景。(会遗漏call等字符串形式的非显式调用)
所查找到的场景,包括类、方法、字段、变量的定义、赋值、使用、Doc注释等。
-
Go To 转到某处
-
Declaration 转到声明
对于接口、抽象方法、变量等,转到声明定义的位置。其余与 GoTo Implemention 相同。
-
Implemention 转到实现
找到元素的实现位置。为系统类、方法时,转到API定义(已配置源码时可查看源码)。
-
-
Refactor 代码重构
-
Rename 重命名
对目录、文件、类、方法、字段、变量等元素重命名,重命名前会查找所有可能的用例(包括Doc注释,可能包含误判)。
实际重命名前检查用例列表,使用Include/Exclude加入或排除用例。对于无需查找用例的场景,可在rename的对话框上取消查找用例。
-
Extract Field 导出字段
将变量重构为成员,相关写法自动变更。(不要做手动替换的傻事,极易遗漏)
-
Extract Method 导出方法
将代码块重构为方法,相关调用写法自动变更。
-
-
Generate 代码生成
-
Constructor 实现构造器/构造方法
-
Implement/Override Methods 实现/重写方法
-
Setter/Getter 实现属性访问器
-
Doc Block 实现注释块
-
还有更多功能,有兴趣自行查阅官方手册或博客。代码模板功能不建议使用。
三、 编辑(更高效)
-
Floding > Expand/Collapse
代码上右键操作,展开或收缩代码。实际使用时,可对整个文件或选取操作。菜单上提供了更多功能。
-
Reformat Code
菜单栏上
Code > Reformat Code
,对整个文件或选取进行代码格式化操作。 -
多行编辑
按住 Alt 后鼠标选中多行,可多行同时输入。对于写数组等很好用。
此功能 Notepad++ 上需选项内开启可用,VS等部分IDE可用
-
Alt+UP/DOWN
Alt+Up/Down
快速在转到上一个、下一个方法 -
TAB/Shift+TAB
Shift+Tab
是 Tab 的反操作。此功能 Notepad++ 可用,VS等部分IDE可用_
-
Ctrl+TAB Alt+LEFT/RIGHT
Ctrl+Tab
,切换至在最近操作的上一个编辑窗口。长按时选选择切换至哪一个窗口。Alt+Left/Right
,按显示顺序切换至左边或右边的编辑窗口。此功能大部分IDE可用
-
HOME/END Shift+方向 Shift+HOME/END
Home/End
输入光标移动至当前行的头或尾Shift+方向
选中至对应方向(与鼠标选中相同)Shift+Home/End
选中从输入光标至头或尾的部分此功能基本通用
-
Ctrl+方向 Ctrl+HOME/END
Ctrl+方向
与鼠标滚轮相同,上下左右滚动(与输入光标无关)Ctrl+Home/End
转到文件起始或文件结尾此功能基本通用
快捷键部分,基本都为非必要功能,但可减轻切换鼠标打乱键盘操作流程的影响。对全键盘工作有兴趣的同学,可关注VIM(个人觉得矫枉过正)。
四、 实用工具
-
TODO/...
建立TAG,方便在源码层面上标记。除内置标记外,还可自行添加
HACK
、WARN
等惯用标记。TODO标签可在菜单栏
View > Tool Windows > TODO
打开的面板上更方便的处理。 -
Changes
Changes 面板上包含了当前工作区所有未提交的文件管理操作(若公司所有项目以单个Project打开,可同时管理多个Repo),可方便的进行比对、重置、提交等操作。
可在菜单栏
View > Tool Windows > Changes
打开面板。 -
Structure
显示当前代码页的类、成员、方法等。与其它IDE的大纲相似。
可在菜单栏
View > Tool Windows > Structure
打开面板。 -
Bookmarks/Favorites
Bookmarks书签,菜单栏
Navigate > Bookmarks > Show Bookmarks
打开。Favorites收藏,菜单栏
View > Tool Windows > Favorites
打开。 -
Terminal
控制台,菜单栏
View > Tool Windows > Terminal
打开。使用构建工具等需控制台输入命令时常用。
-
Recent Changes / Recent Files
Recent Changes,查看最近变化(与VCS无关)。 菜单栏
View > Recent Changes
打开。Recent Files,查看最近的操作文件列表。菜单栏
View > Recent Files
或快捷键Ctrl+E
打开。 -
Presentation Mode 展示模式
和伙伴一起阅读代码时,通过菜单栏
View > Enter Presentation Mode
进入展示模式。将以大字体且隐藏各功能组件的形式展示代码。
更多功能查看菜单或鼠标右键
五、 PhpStorm的常用配置
PhpStorm 配置分为 Default Settings
和 Settings
两个系列,前者为新建项目时的默认配置,后者为当前项目配置。通常,直接修改当前配置即可。在配置对话框内,可在树形菜单里查找配置项,也可直接在搜索框内搜索。
-
已修改文件但未保存文件上显示*
Editor –> General -> Editor Tabs
选中Mark modifyied tabs with asterisk
-
取消自动保存(视个人使用习惯而定)
Appearance & Behavior -> System Settings
取消Save files on frame deactivation
-
禁止启动时自动打开上一次的项目(多项目时常用)
Appearance & Behavior -> System Settings
取消Reopen last project on startup
-
显示行号(视个人使用习惯而定)
Editor -> General -> Appearance
勾选Show line numbers
-
下载jQuery等库实现更好的提示功能
Lanuages & Frameworks -> JavaScript -> Libraries
点击Download
下载所需库 -
主题
Appearance & Behavior -> Appearance
修改Theme
-
快捷键
Appearance & Behavior -> Keymap
修改Keymaps
类型或自定义具体功能按键
六、 性能
PhpStorm 默认启动为 32 位程序,若有需要,启动安装目录下的 PhpStorm64.exe
程序。
PhpStorm 为 Java 程序,安装目录存在文件 PhpStorm.exe.vmoptions
(启动64位时为PhpStorm64.exe.vmoptions
)。此文件为 Java 虚拟机配置文件,可按实际机器性能调整。
笔记本电脑等电量功耗敏感的使用场景,在必要时,点击 PhpStorm 右下角的“医生”图标调整智能级别和是否开启省电模式。
七、 调试
-
在 PHP 上配置 XDebug
XAMPP 已包含 XDebug 组件,但未启用。若需在其它环境上需自行安装,请查阅文末参考链接。
在
php.ini
(
) 的末尾找到\php\php.ini [XDebug]
配置段,取消;
注释、并设置xdebug.remote_enable = 1
。配置如下:[XDebug] zend_extension = "C:\**\xampp\php\ext\php_xdebug.dll" xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp" xdebug.remote_host = "127.0.0.1"
其中的
zend_extension
等路径与 XAMPP 安装路径有关。配置完成重启 Apache,使用 PHP 的
phpinfo()
函数打印环境信息,确认XDebug模块已正确打开。 -
配置 PhpStorm
按
File > Settings > Languages & Frameworks > PHP > Debug > DBGp Proxy
打开配置面板,按下列内容配置:IDE key: PHPSTORM Host: localhost Port: 80
-
配置 浏览器
Chrome 可安装 [Xdebug helper][xdebug_helper] 插件,FireFox 可安装 [easy Xdebug][easy_xdebug] 插件,并配置 `IDE key` 为 `PHPSTORM`。
IE 等无插件或Chrome商店被墙(GFW)等场景下,可使用 PhpStorm 提供的浏览器书签(bookmarklet)的方案。将[Xdebug & Zend Debugger bookmarklets generator for PhpStorm][phpstorm_bookmarklet]上的【Start debugger】、【Stop debugger】、【Debug this page】三个链接设置为浏览器书签,在需调试的页面点击书签执行作为书签链接的JS代码。
-
调试过程
在 PhpStorm 上点击
Run > Start Listening for PHP Debug Connections
,确保已开始监听调试器(也可在Toolbar在点击图标,电话形状位于VCS左侧)。在所需调试代码上设置断点(或其它调试方式)。
在已配置好XDebug的浏览器上发起能执行到中断(break)代码的请求(刷新页面或Ajax),PhpStorm将提示中断。
-
调试技巧
与其它IDE相似,PhpStorm提供了断点在内的完整调试功能。常用功能如下:
浏览调用堆栈,并查看调用堆栈上任意节点(Frame)的工作现场。
-
$var = 'a'; function f1() { $var = 'c'; phpinfo(); // 命中断点 /* Frame3, $var === 'c' */ } function f2() { $var = 'b'; f1(); /* Frame2, $var === 'b' */ } f2(); /* Frame1, $var === 'a' */
-
当前中断时刻,浏览全局对象和局部变量,需要时可对其修改(数组、对象也可修改)
-
当前中断时刻,执行执行输入的PHP代码(Evaluate Expression)
-
对于需要跨中断监控的变量、对象值,在Watches面板设置表达式快捷显示(对于复杂对象上某个字段有用)
-
逐语句、逐过程、断点列表等功能
-
首行中断,将在执行至第一行代码时中断。在不清楚项目的入口结构时有用。
-
-
其它说明
上述配置方法同时适用于远程调试(非localhost)。
JetBrains公司在Chrome上还提供了和JetBrans系列IDE(PhpStorm, WebStorm ...)配套使用的 Javascript Debugger.
参考
- [Blog] TortoiseHg 学习笔记
- [Ask] Mercurial 有哪些优点?适合怎样的开发者或团队使用?
- [Plugin] easy Xdebug
- [Plugin] Xdebug helper
- [Official] Xdebug & Zend Debugger bookmarklets generator for PhpStorm
- [Official] Zero-configuration Web Application Debugging with Xdebug and PhpStorm
- [Blog] PHPStorm中调试PHP代码
- [Blog] windows环境phpstorm调试环境搭建
- [Blog] PHPStorm下XDebug配置
- [Blog] 使用phpstorm和xdebug实现远程调试
windows下phpstorm的快捷键
ctrl+shift+n查找文件
ctrl+shift+f 在一个目录里查找一段代码(ctrl+f的升级版)
ctr+shift+r 在一个目录里查找一段代码并替换(ctrl+r的升级版)
ctrl+j插入活动代码提示
ctrl+alt+t当前位置插入环绕代码
alt+insert生成代码菜单
ctrl+q查看代码注释
ctrl+d复制当前行
ctrl+y删除当前行
shift+F6重命名
ctrl+shift+u字母大小写转换
ctrl+f查找
ctrl+r替换
F4查看源码
ctrl+shift+i查看变量或方法定义源
ctrl+g跳转行
ctrl+alt+F12跳转至当前文件在磁盘上的位置
alt+down查看下一个方法
alt+up查看上一个方法
ctrl+alt+l重新格式化代码
ctrl+shift+downstatement向下移动
ctrl+shift+upstatement向上移动
alt+shift+downline向下移动
alt+shift+upline向上移动
ctrl+/行注释
ctrl+shift+/块注释
ctrl+shift+n打开工程中的文件
ctrl+b跳到变量申明处
ctrl+[]匹配 {}[]
ctrl+shift+]/[选中块代码
ctrl+x剪切行
ctrl+shift+v复制多个文本
alt+left/right标签切换
ctrl+p显示默认参数
ctrl+F12在当前类文件里快速查找方法
--------------------------------------------------------------
phpstorm快捷键:
// ctrl+shift+n 查找文件
// ctrl+j 插入活动代码提示
// ctrl+alt+t 当前位置插入环绕代码
// alt+insert 生成代码菜单
// ctrl+q 查看代码注释
// ctrl+d 复制当前行
// ctrl+y 删除当前行
// shift+F6 重命名
// ctrl+shift+u 字母大小写转换
// ctrl+f 查找
// ctrl+r 替换
// F4 查看源码
// ctrl+shift+i 查看变量或方法定义源
// ctrl+g 跳转行
// ctrl+alt+F12 跳转至当前文件在磁盘上的位置
// alt+down 查看下一个方法
// alt+up 查看上一个方法
// ctrl+alt+l 重新格式化代码
// ctrl+shift+down statement向下移动
// ctrl+shift+up statement向上移动
// alt+shift+down line向下移动
// alt+shift+up line向上移动
// ctrl+/ 行注释
// ctrl+shift+/ 块注释
// ctrl+shift+n 打开工程中的文件
// ctrl+b 跳到变量申明处
// ctrl+[] 匹配 {}[]
// ctrl+shift+]/[ 选中块代码
....
// ctrl+x 剪切行
// ctrl+shift+v 复制多个文本
// alt+left/right 标签切换
// ctrl+p 显示默认参数
// ctrl+F12 在当前类文件里快速查找方法