PHP 的极简 Sublime Text 3 设置
发布日期: 作者: Paul Redmond
尽管许多开发人员纷纷转向 IDE 和其他混合工具,例如 Visual Studio Code,但我发现自己一直在尝试创建一个极简的 Sublime Text 3 设置。我内心是一个极简主义者,我喜欢我的物理环境和虚拟环境尽可能地简洁和整洁。
我想向您展示我所使用的极简 Sublime Text 3 设置,但我仍然觉得它拥有我保持高效所需的大部分功能。
内置功能
我最喜欢的内置功能是 转到 -> 转到定义..
和 转到 -> 转到引用
Sublime 的代码智能在早期版本中得到了极大的改进,我不再需要 PHP Companion 来进行代码智能,比如导航到方法调用的源代码。
我每天使用快捷键 ⌥⌘↓ 转到定义数十甚至数百次。如果我需要快速查看方法签名,这个快捷键就能派上用场,我可以使用 ⌘P⏎ 在定义和当前文件之间快速跳转。
转到任何位置并立即按下回车键,是我在两个文件之间跳转的快速方法。
如果您位于方法定义处,您可以使用转到引用来获取可能的引用调用的列表,例如本例中的 Application::run()
方法
您每天会使用数百次的最明显的内置功能是 转到任何位置
,使用 ⌘P。我经常使用它。
此外,如果我认为知道方法名,但需要确认,我每天会使用项目中的转到符号数十次。
我发现放弃 IDE 使我的思维更加敏锐,当我需要记住每天使用的库 API 时。每次我寻找一个方法时,我不会依赖自动完成,而是进行一个小测验,看看自己是否能记住方法名。
如果我最终忘记了方法名,我会快速跳转到类并搜索或使用 转到符号
来查看方法列表。
最后,我喜欢这个默认情况下未配置但可立即使用的键绑定
{ "keys": ["ctrl+shift+r"], "command": "reveal_in_side_bar"}
使用这个键绑定 Control + Shift + r
可以显示我当前正在编辑的文件的侧边栏。我喜欢用它来了解文件夹布局和当前编辑文件的其他相关类。
PHP Companion
除了 Laravel 特定的插件(例如 Blade 语法高亮显示,我将在后面列出我的完整插件列表),PHP Companion 可能是 Sublime 中唯一需要的 PHP 插件。
我主要使用它的两个功能
- 导入命名空间
- 扩展类的完整命名空间
我使用键盘快捷键可以方便地使用这些命令
[ { "keys": ["alt+t"], "command": "run_phpunit_test"}, { "keys": ["super+alt+t"], "command": "run_single_phpunit_test"}, { "keys": ["super+alt+l+t"], "command": "run_last_phpunit_test"}, { "keys": ["super+shift+t"], "command": "run_phpunit_tests_in_dir"}, { "keys": ["super+shift+ctrl+t"], "command": "run_all_phpunit_tests"}, { "keys": ["super+alt+enter"], "command": "expand_fqcn" }, { "keys": ["alt+enter"], "command": "find_use" }, { "keys": ["f7"], "command": "insert_php_constructor_property" }, { "keys": ["alt+shift+i"], "command": "import_namespace" }, { "keys": ["ctrl+shift+r"], "command": "reveal_in_side_bar"}]
具体来说,PHP Companion 提供了 alt+enter
快捷键,用于在文件顶部导入命名空间,如果我需要扩展类的完整命名空间,我会使用 super+alt+enter
快捷键。我在定义方法的 @param
时会使用后者。
以上代码片段是我所有的键盘绑定列表。我尽量保持它们简洁,只保留少数我反复使用的快捷键。
CLI 访问
我喜欢从命令行打开我的代码,在那里我可以管理源代码控制,或者有时我通过 GitHub Desktop 打开项目,并使用 Sublime 作为编辑器。
我通常在我的 Linux/Unix 系统的 $PATH
中包含 ~/bin
,所以我会像下面这样创建 subl
CLI 的符号链接
ln -s \"/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" \/usr/local/bin/subl
现在,我可以从任何文件夹中使用以下命令在 Sublime 中打开它
cd ~/Code/my-projectsubl .
我每天也经常运行 PHPUnit 测试,所以我使用 Adam Wathan 的 Sublime PHPUnit 插件来运行单个测试。它比使用 phpunit --filter
这样的命令节省了大量时间。
插件
以下是使用 Package Control 安装的完整插件列表
- AdvancedNewFile
- DocBlockr
- Dockerfile 语法高亮显示
- Laravel Blade 高亮显示
- PHPCompanion
- Vuetify
- Sublime PHPUnit (不在 Package Control 中)
就是这样!
正如我在开头所说,我喜欢尽可能地保持运行顺畅和简洁。我曾经使用 Emmet 插件,但我发现它会干扰我在撰写本文时的 转到定义
快捷键。转到定义快捷键是我使用最多的快捷键,因此 Emmet 必须放弃。
代码片段
我倾向于创建一些经常用到的代码片段集合。例如,在一个项目中,我手动创建了许多数据库表模式和工厂定义(长话短说),所以我创建了一个工厂代码片段,用于快速创建工厂定义和状态
<snippet> <content><![CDATA[\$factory->define($1, function (Faker \$faker) { return [ $0 ];});]]></content> <tabTrigger>factory</tabTrigger> <scope>source.php</scope></snippet>
我可以使用 factorystate
来定义工厂状态
<snippet> <content><![CDATA[\$factory->state($1, '${2:state}', function (Faker \$faker) { return [ $0 ];});]]></content> <tabTrigger>factorystate</tabTrigger> <scope>source.php</scope></snippet>
这些只是一些我经常使用、因此拥有代码片段的例子。我的代码片段数量并不多。我不倾向于安装包含代码片段的软件包;我更喜欢创建少数几个我知道会用到的代码片段。
我使用最多的四个代码片段包括用于创建类方法和 PHPUnit 测试方法的快捷键。
首先,我每天使用 pubf
作为选项卡触发器(与 PhpStorm 的快捷键匹配)来快速创建公共方法
<snippet> <content><![CDATA[public function $1(){ $0}]]></content> <tabTrigger>pubf</tabTrigger> <scope>source.php</scope></snippet>
对于受保护的方法,我使用 prof
<snippet> <content><![CDATA[protected function $1(){ $0}]]></content> <tabTrigger>prof</tabTrigger> <scope>source.php</scope></snippet>
最后,对于私有方法,我使用 prif
<snippet> <content><![CDATA[private function $1(){ $0}]]></content> <tabTrigger>prif</tabTrigger> <scope>source.php</scope></snippet>
为了创建一个新的 PHPUnit 测试方法,我使用 test
作为选项卡触发器
<snippet> <content><![CDATA[/** @test */public function $1(){ $0}]]></content> <description>Create a PHPUnit Test Case</description> <tabTrigger>test</tabTrigger> <scope>source.php</scope></snippet>
代码 linting
我在 Sublime 中不使用 PHP 代码 linter,但是,在合并拉取请求之前,我会对代码运行 CS,有时也会对整个代码库运行 CS 来进行一些清理。我不想让任何东西拖慢我的编辑器,并使用我的控制台工具来清理代码风格问题 ¯\_(ツ)_/¯。
了解更多
好了,就是这样。
我一直都是文本编辑器的用户,从 Textmate 1 的时代就开始了。随着 IDE 的改进,我使用了一段时间 PhpStorm。但我对使用体验并不满意。粉丝如火如荼,内存使用量激增,它不适合我。事实上,对我来说,IDE 就像学习代码编辑的辅助轮。
我很高兴我从 IDE 设置切换到一个极简的 Sublime 设置,我对它非常满意!我感觉自己对工作的代码有了更好的掌控,并且对每天使用的 API 也有了更熟悉的理解。
唯一不足的是缺乏良好的 XDebug 体验。我不介意启动 PhpStorm 来使用 XDebug。我购买了 PhpStorm 的许可证,将其作为一种高级 XDebug 客户端,它在我看来拥有最好的调试体验 :)