
И снова о Sublime - работаем быстрее
18.02.2019 22:33 | Другое
Чем меньше Вы используете мышку и чем больше клавиатуру - тем быстрее Вы работаете. От этой общеизвестной истины и буду отталкиваться. Расскажу о тех командах, которые использую чаще всего, и которые реально помогают ускорить процесс написания кода.
Прежде всего рекомендую прочесть предыдущую статью про 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 добавят комфорта.
Успехов!