И снова о Sublime - работаем быстрее

И снова о Sublime - работаем быстрее

Чем меньше Вы используете мышку и чем больше клавиатуру - тем быстрее Вы работаете. От этой общеизвестной истины и буду отталкиваться. Расскажу о тех командах, которые использую чаще всего, и которые реально помогают ускорить процесс написания кода.

Прежде всего рекомендую прочесть предыдущую статью про Sublime - в ней немало полезного, в том числе неплохой перечень пакетов.

Да, уточню: ос - Ubuntu 18.04, Sublime Text 3 Build 3176.

Как открывать файлы

Ctrl + P - наше всё. Нажимаем данную комбинацию клавиш и вводим название файла. Можно вводить как название файла, так и путь к нему, причём путь вовсе не обязательно вводить полностью (начиная с корня проекта), кроме всего прочего его можно сокращать. Например, нам нужен файл resources/views/projects/index.blade.php. Некоторые возможные варианты ввода:

projects/index.blade.php
proj/index.blade.php
v/p/index.blade.php
r/v/p/index.blade.php
index.blade.php   

 

Даю гарантию - Вам не придётся набирать название полностью. Например, в моём случае, для выбора указаного файла достаточно было:

v/p/ind

// или
r/v/p/i

 

Кроме вышеозвученного - можно сразу перейти к методу класса. Например, Ctrl + P и затем:

HomeController@index

 

и оказываетесь в методе index контроллера HomeController.

Ну вот - сайдбар теперь не нужен, можно спокойно освободить место. Для его скрытия используйте Ctrl + B + K. Помимо увеличения рабочего пространства, есть ещё одна плюшка - через пару месяцев будете знать структуру фреймворка как свои пять пальцев. Поначалу может быть непривычно и сложно, будете время от времени открывать сайдбар и подглядывать. Но всё же - откажитесь от его использования, как и от открытия файлов мышкой. Профит не заставит себя ждать.

Также, для того, чтобы вообще ничего не отвлекало, воспользуйтесь клавишей  F11 и разверните Sublime на весь экран (fullscreen). 

Как создавать файлы

Если мы говорим о Laravel, то Вы в курсе, что масса всего полезного создаётся в консоли (для переключения между приложениями Alt + Tab). Но всё же некоторые файлы, надо создавать руками, например, какой-то компонент Vue. Существует замечательный пакет - AdvancedNewFile. Нажимаем Ctrl + Shift + P, вводим название пакета и устанавливаем его. Для создания файлов назначена команда Super + Alt + N. Внизу редактора появится поле ввода, в котором надо ввести путь к новому файлу (разумеется, с названием файла), например:

resources/js/components/Navbar.vue

 

Если же находитесь в директории, в которой нужно создать файл, достаточно набрать:

:Navbar.vue

 

Лейауты и переключение между вкладками

В случае, когда нужно сравнить или попросту видеть два файла, нам поможет Shift + Alt + 2. Можно и более 2-х (для чего достаточно заменить цифру 2 на 3 или 4 и т.д.), но, лично у меня, не было в этом необходимости. После того, как появилась вторая колонка - Ctrl + P и открывайте нужный файл. Чтобы вернуться к лейауту с одной колонкой - Shift + Ctrl + 1.

Переключение между файлами и вкладками - Ctrl + PageUp/PageDown. Если шаблон с одной колонкой, можно и Ctrl + Tab. Закрытие текущего файла - Ctrl + W.

Мультикурсор

Для того, чтобы выделить слово - наведите курсор на слово (забудьте о мышке!) и жмите Ctrl + D. Чтобы выделить следующее такое же слово - снова Ctrl + D. Если нужно выделить все идентичные слова в файле - после выделения первого нажимаем Alt + F3. Важно: данные команды регистронезависимы.

Создание сниппетов

Полагаю, никто не станет спорить, что вёрстка с Emmet и без него - две большие разницы. Так почему бы и для php не сделать что-либо подобное? Например, шорткаты для методов:

  • m+ - public function () {}
  • m# - protected function () {}
  • m_ - private function () {}

Сокращения выбираете такие, какие захотите - это дело вкуса. Естественно, можно не ограничиваться только методами. Приведу один пример, дабы понятно было что и как. Для создания сниппета жмём Ctrl + Shift + P, вводим snippetmaker и из списка выбираем

SnippetMaker: Make Snippet

 

После этого внизу редактора появится поле для ввода данных. Введём следующее:

Trigger - т.е. шорткат. Пишем m+ и жмём Enter

Description - описание сниппета. Пусть будет PHP public method. Жмём Enter.

Scope - определяет контекст, в котором сниппет будет активным. У меня по умолчанию:

embedding.php, text.html.basic, meta.embedded.block.php, source.php, meta.class.php, meta.block.php

 

так и оставляю. Если хотите, чтобы шоркат можно было применять везде - оставьте поле пустым.

Далее File Name - на своё усмотрение. В открывшемся файле заменяем контент на следующий:

<snippet>
    <content><![CDATA[
public function ${1}(${2})
{
    ${0}
}
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>m+</tabTrigger>
    <description>PHP public method</description>
    <scope>embedding.php, text.html.basic, meta.embedded.block.php, source.php, meta.class.php, meta.block.php</scope>
</snippet>

 

И сохраняем. Теперь достаточно в файле php набрать m+ и нажать Tab - появится публичный метод и курсор переместится в позицию 1 - вводим название метода и снова Tab - курсор переместится внутрь скобок. Вводим аргументы и опять Tab - курсор окажется в позиции 0 - вводим тело метода.

Также сниппеты можно создавать, если зайдёте в Tools -> Developer ->  New Snippet... 

Ну и конечно же мы не первые, кто создаёт сниппеты, а значит на просторах интернета можно найти много интересного, скажем целую библиотеку для Bootstrap 4 и т.д.

PHP Companion

Если ещё не установили - рекомендую это сделать прямо сейчас. Здесь всё описано. Добавление namespace, use - незаменимо. Но помимо этого кайфоните от создания конструктора нажав F7. Правда ведь, красота?

PHP Getters and Setters

Позволяет генерировать геттеры и/или сеттеры как для отдельного свойства, так и для всех свойств. Устанавливаем как обычно. Использование - Shift + Ctrl + P, вводим, например, getters и далее выбираем нужную опцию - геттеры или сеттеры, или и то, и другое; для какого-то конкретного свойства или для всех.    

PHP CS Fixer

О-БЯ-ЗА-ТЕЛЬ-НО! Позволяет настроить форматирование кода. Для этого необходимо установить пакет php-cs-fixer. Устанавливаем глобально:

composer global require friendsofphp/php-cs-fixer

 

Затем следует убедиться, что в переменной PATH есть каталог бинарников Composer. Местоположение каталога зависит от платформы. В моём случае это $HOME/.config/composer/vendor/bin. Если путь не добавлен, добавьте его командой:

export PATH="$PATH:$HOME/.config/composer/vendor/bin"

 

Если всё сделано правильно, посмотреть параметры и доступные команды можно в консоли, выполнив:

php-cs-fixer

 

Фиксить можно и в консоли, указав имя файла. Например:

php-cs-fixer fix test.php --rules=@PSR2

 

В Sublime идём в Tools -> Build System и выбираем New Build System... В результате откроется файл в который вставим следующий код:

{
    "shell_cmd": "php-cs-fixer fix $file --rules=@PSR2"
}

 

Сохраняем файл. При этом создадим папочку builds а файл назовём PSR-2.sublime-build. Теперь может форматировать код командой Ctrl + B. Возможно предварительно стоит опять-таки зайти в Tools -> Build System и выбрать в меню (появившийся после предыдущих операций пункт) PSR-2.

Также зайдём в файл настроек Preferences -> Settings и в конце добавим строку:

"show_panel_on_build": false


Уже всё работает, но мы пойдём ещё дальше и установим ещё один пакет: Shift + Ctrl + P -> Install Package -> PHP CS Fixer.  Далее открываем Preferences -> Package Settings -> PHP CS Fixer ->Settings - User вставляем и сохраняем:

{
    "on_save": true
}

 

Но и это ещё не всё. Создадим конфигурационный файл так, как описано в документации пакета. И вставим следуюший код:

<?php

return PhpCsFixer\Config::create()
    ->setRules([
        '@PSR2' => true,
        'array_syntax' => ['syntax' => 'short'],
        'no_unused_imports' => true
    ]);

 

Проще говоря, форматировать код будем в соответствии со стандартом PSR-2, для массивов использовать короткий синтаксис (т.е. трансформировать array() в [ ]), а также удалять не используемые импорты. Снова открываем Preferences -> Package Settings -> PHP CS Fixer ->Settings и добавляем путь к настройкам:

{
    "on_save": true,
    "config": "/home/yourusername/.phpcsfixer"
}

Внимание: вместо yourusername подставляете своё значение

Превосходно! Теперь при сохранении, код будет автоматически отформатирован.

Sublime Linter

Shift + Ctrl + P -> Package Install -> SublimeLinter, после него таким же образом устанавливаем SublimeLinter-phpcs. Читаем документацию и в итоге оказываемся здесь. Ставим глобально ещё один пакет:

composer global require "squizlabs/php_codesniffer=*"

 

Перезапускаем Sublime, и теперь линтер будет указывать нам на ошибки. Что и требовалось.

Заключение

Необходимые иструменты есть, далее всё в наших руках, причём в самом прямом смысле. Немного настойчивости и работа пойдёт гораздо быстрее. А CodeSniffer и Linter добавят комфорта.

Успехов!