自定义sublime text 3插件
上次写了关于sublime text 3自定义插件的步骤, 只能说起到一个抛砖引玉的作用, 并不具备多少实际功能, 这次我将结合最近工作的需要, 介绍如何将php代码格式工具php cs fixer 集成sublimetext 3中, 作为你的插件格式化php代码
首先我们需要安装 php cs fixer,下载 php-cs-fixer.phar
wget http://get.sensiolabs.org/php-cs-fixer.phar -O php-cs-fixersudo mv php-cs-fixer.phar /usr/local/bin/phpcssudo chmod +x /usr/local/bin/phpcs
接下来验证一下是否安装成功:
phpcs
显示:
Usage: help [options] [--] []
则表明anything OK
说一下这个插件的目标:
保存文件时自动格式化php文件
组合键格式化php文件
首先需要一个sublime command,
class MikeCommand(sublime_plugin.TextCommand): def run(self, edit):
在 run 方法中, 调用 phpcs命令格式化php文件
class MikeCommand(sublime_plugin.TextCommand): def run(self, edit): view = self.view; fileName = view.file_name(); suffix = os.path.splitext(fileName)[1][1:] if suffix == 'php': fix(fileName)def fix(phpFile): if not os.path.exists(phpFile): return; command = 'phpcs fix ' + phpFile; os.system(command);
因为在keymap文件中配置过组合键:
[ { "keys": [ "ctrl+alt+k" ], "command": "mike" }]
所以当我 使用 ctrl+alt+k 时代码便自动格式化
那么如何在自动保存是去执行响应的命令呢? sublime text 3 api 提供了EventListener, 因此我们定义class 继承自sublime_plugin.EventListener, 然后监听响应的事件即可:
class AutoAlign(sublime_plugin.EventListener): def on_post_save(self, view): fileName = view.file_name(); suffix = os.path.splitext(fileName)[1][1:] if suffix == 'php': fix(fileName)
关于更多事件类型, 请参考EventListener
到现在, 一开始的两个目标都已经实现了, 我们可以看一下效果:
没有代码风格的php文件:
$value) { $ids = explode(',', $value); asort($ids); $fullPermutation[$key] = md5(implode(',', $ids)); } return $fullPermutation;}
ctrl+alt+k 或 ctrl+s后的文件:
$value) { $ids = explode(',', $value); asort($ids); $fullPermutation[$key] = md5(implode(',', $ids)); } return $fullPermutation;}
php-cs 默认是遵循 PSR-2 的编码规范的, 但是也可以通过指定参数设置代码风格
但是这里存在另外一个问题, 所有的执行都是在主线程里面, 那么整体就会很卡, 我们需要在这种计算提取到额外的线程里面.
class HandlerThread(threading.Thread): def __init__(self, view): self.view = view threading.Thread.__init__(self) def run(self): fileName = self.view.file_name(); suffix = os.path.splitext(fileName)[1][1:] if suffix == 'php': fix(fileName)
那么更改监听 ctrl+s 的实现方式:
class AutoAlign(sublime_plugin.EventListener): def on_post_save(self, view): thread = HandlerThread(view) thread.start()
因为sublime text 3的api是用pyhton 3写的, 所以我们的实现都是使用的python 3.在使用 threading.Thread, os.path.splitext, os.system时要记得引入相应的package.
import osimport os.pathimport threading
至此所有的工作皆已完成, 又可以愉快的写php了!
很多时候语言只是一种工具, 重要的还是想法,思路.我们知道我们可以创造很多新奇的东西, 但是我们却不知道idea从何而来.只有不断的积累学习, 眼界开阔之后, 你才会看到和想到更多.才能创造属于我们的价值~
相关文章:

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



An avatar on Netflix is a visual representation of your streaming identity. Users can go beyond the default avatar to express their personality. Continue reading this article to learn how to set a custom profile picture in the Netflix app. How to quickly set a custom avatar in Netflix In Netflix, there is no built-in feature to set a profile picture. However, you can do this by installing the Netflix extension on your browser. First, install a custom profile picture for the Netflix extension on your browser. You can buy it in the Chrome store. After installing the extension, open Netflix on your browser and log into your account. Navigate to your profile in the upper right corner and click

PyCharm is a powerful and popular Python integrated development environment (IDE) that provides a wealth of functions and tools so that developers can write code more efficiently. The plug-in mechanism of PyCharm is a powerful tool for extending its functions. By installing different plug-ins, various functions and customized features can be added to PyCharm. Therefore, it is crucial for newbies to PyCharm to understand and be proficient in installing plug-ins. This article will give you a detailed introduction to the complete installation of PyCharm plug-in.
![Error loading plugin in Illustrator [Fixed]](https://img.php.cn/upload/article/000/465/014/170831522770626.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
When launching Adobe Illustrator, does a message about an error loading the plug-in pop up? Some Illustrator users have encountered this error when opening the application. The message is followed by a list of problematic plugins. This error message indicates that there is a problem with the installed plug-in, but it may also be caused by other reasons such as a damaged Visual C++ DLL file or a damaged preference file. If you encounter this error, we will guide you in this article to fix the problem, so continue reading below. Error loading plug-in in Illustrator If you receive an "Error loading plug-in" error message when trying to launch Adobe Illustrator, you can use the following: As an administrator

A Venn diagram is a diagram used to represent relationships between sets. To create a Venn diagram we will use matplotlib. Matplotlib is a commonly used data visualization library in Python for creating interactive charts and graphs. It is also used to create interactive images and charts. Matplotlib provides many functions to customize charts and graphs. In this tutorial, we will illustrate three examples to customize Venn diagrams. The Chinese translation of Example is: Example This is a simple example of creating the intersection of two Venn diagrams; first, we imported the necessary libraries and imported venns. Then we create the dataset as a Python set, after that we use the "venn2()" function to create

What is the Chrome plug-in extension installation directory? Under normal circumstances, the default installation directory of Chrome plug-in extensions is as follows: 1. The default installation directory location of chrome plug-ins in windowsxp: C:\DocumentsandSettings\username\LocalSettings\ApplicationData\Google\Chrome\UserData\Default\Extensions2. chrome in windows7 The default installation directory location of the plug-in: C:\Users\username\AppData\Local\Google\Chrome\User

When users use the Edge browser, they may add some plug-ins to meet more of their needs. But when adding a plug-in, it shows that this plug-in is not supported. How to solve this problem? Today, the editor will share with you three solutions. Come and try it. Method 1: Try using another browser. Method 2: The Flash Player on the browser may be out of date or missing, causing the plug-in to be unsupported. You can download the latest version from the official website. Method 3: Press the "Ctrl+Shift+Delete" keys at the same time. Click "Clear Data" and reopen the browser.

How to customize shortcut key settings in Eclipse? As a developer, mastering shortcut keys is one of the keys to improving efficiency when coding in Eclipse. As a powerful integrated development environment, Eclipse not only provides many default shortcut keys, but also allows users to customize them according to their own preferences. This article will introduce how to customize shortcut key settings in Eclipse and give specific code examples. Open Eclipse First, open Eclipse and enter

1. The picture below is the default screen layout of edius. The default EDIUS window layout is a horizontal layout. Therefore, in a single-monitor environment, many windows overlap and the preview window is in single-window mode. 2. You can enable [Dual Window Mode] through the [View] menu bar to make the preview window display the playback window and recording window at the same time. 3. You can restore the default screen layout through [View menu bar>Window Layout>General]. In addition, you can also customize the layout that suits you and save it as a commonly used screen layout: drag the window to a layout that suits you, then click [View > Window Layout > Save Current Layout > New], and in the pop-up [Save Current Layout] Layout] enter the layout name in the small window and click OK
