PHP开发者的Sublime Text必备技能

近来很多PHP社区的PHPer乃至周围的同事们都在开始使用PHPStorm了。我们很喜欢PHPStorm的代码提示功能,但是仍然对Sublime Text的响应快、瞬间启动以及便捷性甚是怀念。于是我就想,除了一味的使用PHPStorm之外,我可不可以打造一个PHP-focused的IDE,让PHPer们回归Sublime Text,从而统一两界。

下面我们就开始抛弃PHPStorm,拥抱Sublime Text了。但注意啦,还是有蛮多功能是PHPStorm才有的,可是实话实说,相对于编码的效率来讲,没有这些功能的影响甚微。下面说的是Sublime Text 3,注意软件版本哦。

PHPStorm中必不可少的功能 #

如果PHPStorm没有下面这些PHP-focused功能,可以说PHPStorm是不值得推荐的PHP IDE的,更何况PHPStorm速度慢、价格贵、内存消耗多呢。但是我们该怎样在Sublime Text实现下面这些特性呢?

  • 自动导入classes
  • Class FQCN inline completion自动补全
  • 方便跳转到symbol定义
  • 方便插入构造函数
  • 高亮显示未使用的导入
  • 集成Git
  • Code sniffing/PSR-2 validation
  • PHP代码自动补全
  • 项目内代码自动补全

插件管理器(Package Control)#

在我们讨论之前,你需要首先安装上Package Control,这样你才能很方便的去安装Sublime插件。如果你还没有安装,你可以参考此文Go install Package Control now进行安装。

除了特殊说明,下面的每个插件都是通过Package Control安装的。

Sublime PHP Companion #

Sublime Text最值得安装的PHP-focused的插件是Sublime PHP Companion.

PHP Companion包含很多实用的功能,但是默认没有keymapping,你可以参照Learn more about how to set up PHPCompanion keymapping here进行配置。

  • find_use (F10) – 当鼠标移动到class名称前, 可以非常方便的导入相关的class.
    PHP开发者的Sublime Text必备技能
  • expand_fqcn (F9) – 和find_use功能类似,但是它不是直接导入路径,而是使用行内全类名(FQCN inline)PHP开发者的Sublime Text必备技能
  • import_namespace (F8) – 根据当前文件路径,在当前文件中添加命名空间
  • goto_definition_scope (shift+F12) – 和Sublime Text自带的goto_definition功能一样, 但是是PHP-aware的方式

这个插件不怎么完美,检测命名空间以及解析奇怪名称的情况下,没有PHPStorm那么只能。但是可以显著增加每天开发的速度。

AllAutocomplete #

遗憾的是Sublime PHP Companion不提供注册classes并自动补全功能,然而SublimeAllAutocomplete会自动注册在其它标签页打开文件中所包含的命名(函数、类等),当输入时就会自动补全。

和完全的userland-code-sensitive自动补全有些差别,但是它能让你受益匪浅。

PHP开发者的Sublime Text必备技能

Cmd-click快速跳转到函数定义位置 #

Sublime PHP Companion插件可以实现右键点击函数名时,自动跳转到函数定义处。与PHPStorm不同的是,phpstorm使用CMD-click跳转到函数定义位置。

首先你得按照下面的步骤,创建一个user mousemap文件:

Linux
~/.config/sublime-text-3/Packages/User路径下面创建默认的(Linux).sublime-mousemap

Mac
在~/Library/Application Support/Sublime Text 3/Packages/User路径下面创建默认的(OSX).sublime-mousemap

Windows
在%appdata%\Sublime Text 3\Packages\User路径下面创建默认的(Windows).sublime-mousemap

然后将下面的代码拷贝到文件中

[
    {
        "button": "button1", 
        "count": 1, 
        "modifiers": ["ctrl"],
        "press_command": "drag_select",
        "command": "goto_definition"
    }
]

于是乎Sublime Text就知道当你按住ctrl键的同时点击鼠标左键,就会触发goto_definition命令(源地址)

PHP开发者的Sublime Text必备技能

友情提示: 本人原本想建议使用super modifier,因为它非常类似于PHPStorm;但是Sublime Text按住super按键然后点击鼠标可以有多个编辑光标的功能会被覆盖掉,于是我没有使用super modifier。

Code sniffing以及PHP_CodeSniffer #

Sublime PHPCS #

名为Sublime PHPCS的插件将PHP_CodeSniffer、PHP's linter、PHP Mess Detector和Scheck都集成到Sublime中。

你可以所有的设置,但是你首先要么在每次保存文件时运行一次(可能会有点烦),要么每次从命令面板中运行(按下按键super+shift+p,输入"PHP Code Sniffer: Sniff this file")或者直接使用默认的键盘快捷键ctrl-super-shift-s,会马上显示代码中不符合linter的地方。

但是注意啦,这些以及其它依赖于code sniffing和linting的插件,需要安装相应的命令行程序,请访问网站阅读安装指导。

PHP_CodeSniffer Sublime Text 2/3插件 #

有趣的是,PHP_CodeSniffer插件是由PHP CodeSniffer开发组的相关人员开发的,而且功能是一样的,只不过只有PHPCS功能而已

Mike Francis PHP CS Fixer Build Script #

Mike Francis也分享自己编写的custom build script插件,每次你触发的时候都会对你的代码执行一次PHP-CS-Fixer,也就是说强制对你写的代码执行PHP PSR-2代码风格规范检查。

不过提醒大家,做以下配置: "show_panel_on_build": false, 不然每次执行的时候都会弹出命令面板。

SublimeLinter #

SublimeLinter PHP (依赖于SublimeLinter插件) 基于PHP内建的linter功能 (和Sublime PHPCS插件一样)。这个插件非常简单,除了linter还是linter。

DocBlockr #

如果你曾经使用PHPStorm, 你很可能会写上文档注释。只要在函数上面添加注释,DocBlockr会自动将函数的参数和返回值定义添加到注释之中。

PHP开发者的Sublime Text必备技能

Git助手 #

Sublime Text Git #

你是不是很讨厌从IDE和GIT终端之间切换?安装Sublime Text Git之后,你就可以从Sublime Text命令面板中直接执行许多GIT命令。

GitGutter #

GitGutter插件可以显示每一行的差异信息–是被修改、新增还是删除?虽然没有PHPStorm的Git gutters一样强大,但是已经向前迈了一大步。

PHP开发者的Sublime Text必备技能

语法高亮 #

PHPUnit Build #

正如其名,它可以从Sublime Text的命令面板中方便地执行PHPUnit。如果你喜欢键盘快捷键,也可以使用插件:SimplePHPUnit

CodeIntel #

CodeIntel能够让sublime支持自动补全、快速跳转到标示定义、以及获取当前所用函数信息的功能,sublime因此变得更加智能化,但是实际使用中自动补全功能还不是那么的理想。

其它插件 #

在Twitter圈子中,许多伙伴分享了自己用到的插件。虽然我自己没有一一使用这些插件,但是我觉得它们值得一试,于是我把他们粗略地分享出来。

  • ApplySyntax:增强Sublime Text检测当前文件的语法功能
  • DashDoc:Mac用户可以方便的使用Dash程序在Dash中查找单词
  • Function Name Display:将当前文件、类和函数方法名信息显示在任务栏
  • phpfmt:替代PHP CS Fixer另一个选择
  • CodeComplice is code intel, but newer—也是这是解决之道?
  • Xdebug Client
  • EditorConfig:对于每个项目,以统一的标准分享各个编辑器的不同设置。This plugin lets you import and use them in Sublime Text. (learn more about the EditorConfig format)
  • SublimePrettyJSON:格式化JSON字符串
  • CaseConversion:在snake_case、camelCase和PascalCase之间轻松转换、分隔以及连接单词等等。

CodeBug for Xdebug #

怀念PHPStorm集成的Xdebug功能吗?试试Codebug这个xdebug客户端。

PHP开发者的Sublime Text必备技能

一些常见的Sublime Text小技巧 #

此文的目的不是涵盖Sublime Text的方方面面,而是涉及重点的地方。

通过"Goto Anything" 快速查找文件(快捷键cmd+p) #

只要按下cmd+p快捷键,你就可以使用强大的Goto Anything面板,你可以快速查找文件(比如输入Handler.php),但是还可以定位到文件的指定行(例如输入Handler.php:35回车,就可以打开Handler.php文件并且跳转到第35行)或者指定标识 (Handler.php@report)。

PHP开发者的Sublime Text必备技能

使用命令面板查找命令(cmd+shift+p) #

Goto Anything面板可以在项目中查找文件,而命令面板可以用来查找命令。也就是说任何Sublime Text内置的命令,比如编译文件、重命名文件等,包括第三方的插件包可以通过键盘在命令面板中运行,即使你不知道命令的快捷键。

PHP开发者的Sublime Text必备技能

"Goto Symbols"功能查找标识符(cmd+r) #

按下super+R快捷键,打开Goto Symbol面板,就可以在下拉列表中快读定位到当前编辑的文件中的任何标识符(类、方法或函数)。

PHP开发者的Sublime Text必备技能

多光标 #

许多编辑器具备多光标的功能,但是Sublime Text是做得最好的。如果你从来没有尝试过它,你可以从此了解个大概:

打开文件,按住"super"键(Mac上是cmd键)然后在文件中点击多处,现在你就可以在多处同时编辑。

另一个必备良技:将鼠标放在普通词汇上,比如变量名上,然后不断按住Super+D快捷键,这时候你会选择多个变量的实例,而且可以同时编辑它们

PHP开发者的Sublime Text必备技能

除此之外,选择五行代码然后按下Super+shift+l快捷键试试。

模糊匹配 #

你知道吗,在Sublime Text的命名面板中运行命令,你不用完整的输入命令词汇?

在大多数编辑器中(像PHPStorm),如果你想查找名字为resources/views/conferences/edit.blade.php的文件,你可以输入resources/views/conferences/edit.blade.php又或者conferences/edit.blade.php,但是在Sublime Text中,你只需要输入类似resvieconedblp这样的就可以了,只要你输入的字符串按照顺序位于查找的文件路径中,你就可以定位到文件了。跳过一个字母或者斜杠没有任何的问题。

PHP开发者的Sublime Text必备技能

总结 #

  • FQCN类行内补全 (Sublime PHP Companion)
  • 快速跳转到符号定义的位置 (Sublime PHP Companion)
  • 快速构造器注入(通过宏?)
  • 高亮没有用到的imports (SublimeLinter)
  • Git gutters (GitGutter)
  • Code sniffing/PSR-2 validation (SublimePHPCS etc.)
  • 代码补全: PHP
  • 代码补全: project code

其实还不错吧,然后我们讲一讲哪些缺失的部分:

  • 构造器注入:例如简单地将属性插入到构造器中作为属性,设定其属性值,定义类属性。我觉得可以通过灵活的宏来解决,但是我还不了解宏来着。
  • CodeIntel目的在于提供PHP代码补全,但是我不认为自动补全功能是捕捉代码中的定义、然后提供自动补全和参数建议功能,虽然毫无疑问此功能将带来很大的便捷。即便如此,AllAutocomplete确实减轻了一些开发中的痛苦。

个人总结如何?大多数时候,我觉得依情况而定。我觉得一方面取决于项目、另一方面取决于开发者、取决于是否能够找到上述问题的解决办法。但是相比如六个月之前,我确实学到了很多关于Sublime Text的知识—真他妈的快

原文链接:https://mattstauffer.co/blog/sublime-text-3-for-php-developers,并非完全按照原文翻译。

本文采用CC BY-NC-ND协议进行许可,传播时请保留链接:http://huangzhiqun.com/skill/sublime-text-3-for-php-developers.html

4,504 次阅读
  1. #1 嘻哈段子网童鞋

    学习了,不错! 必须收藏
    :mrgreen:

    VA:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)

发表评论

× 五 = 五

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

疑惑 调皮 伤心 抠鼻 惊讶 微笑 脸红 坏笑 惊讶 发呆 撇嘴 酷 阴险 咒骂 愤怒 白眼 鼓掌 得意 汗 打呵欠 大哭 憨笑

评论