PHP 的极简 Sublime Text 3 设置

发布日期: 作者:

Minimalist Sublime Text 3 Setup for PHP image

尽管许多开发人员纷纷转向 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 插件。

我主要使用它的两个功能

  1. 导入命名空间
  2. 扩展类的完整命名空间

我使用键盘快捷键可以方便地使用这些命令

[
{ "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-project
subl .

我每天也经常运行 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 客户端,它在我看来拥有最好的调试体验 :)

Paul Redmond photo

Laravel News 的撰稿人。全栈 web 开发人员和作者。

归档于
Cube

Laravel 新闻

加入超过 40,000 名其他开发者,绝不错过新的技巧、教程等等。

Laravel Forge logo

Laravel Forge

轻松创建和管理您的服务器,并在几秒钟内部署您的 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发人员必备的代码运行器。使用 AI、自动完成和对本地和生产环境的即时反馈进行调试。

Tinkerwell
No Compromises logo

不妥协

Joel 和 Aaron 是来自“不妥协”播客的两名经验丰富的开发人员,现在可以为您的 Laravel 项目提供服务。 ⬧ 固定费用 7500 美元/月。 ⬧ 无需漫长的销售流程。 ⬧ 无需签订合同。 ⬧ 100% 退款保证。

不妥协
Kirschbaum logo

Kirschbaum

提供创新和稳定性,确保您的 Web 应用程序取得成功。

Kirschbaum
Shift logo

Shift

运行的是旧版本的 Laravel?立即进行自动化的 Laravel 升级和代码现代化,以保持应用程序的最新状态。

Shift
Bacancy logo

Bacancy

仅需 2500 美元/月,为您的项目配备经验丰富的 Laravel 开发人员(4-6 年经验)。获得 160 小时的专业服务和 15 天免费试用。立即安排通话!

Bacancy
Lucky Media logo

Lucky Media

现在就试试 Lucky - Laravel 开发的理想选择,拥有超过十年的经验!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar:Laravel 电子商务

Laravel 的电子商务解决方案。一个开源包,将现代无头电子商务功能的力量带到 Laravel。

Lunar:Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 工作板

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit:Laravel SaaS 启动套件

SaaSykit 是一个 Laravel SaaS 启动套件,包含运行现代 SaaS 所需的所有功能。付款、精美结账、管理面板、用户仪表板、身份验证、预备组件、统计信息、博客、文档等等。

SaaSykit:Laravel SaaS 启动套件
Rector logo

Rector

您无缝升级 Laravel 的合作伙伴,降低成本,加速创新,帮助企业取得成功。

Rector
MongoDB logo

MongoDB

通过强大的 MongoDB 和 Laravel 集成增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。支持事务、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。了解灵活、现代的 MongoDB 数据库如何改变您的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单的无依赖输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

在 Laravel 应用程序中添加 Swagger UI

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel Prompts 构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速模糊站点搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 包在 Laravel 应用程序中添加评论

阅读文章