Несколько лет назад прикупил вместо поднадоевшего Нетбинса прогрессивную среду разработки под названием PHPStorm. С тех пор пользуюсь постоянно, и время от времени нахваливаю.
А недавно заметил, что некоторые фокусы, которые в PHPStorm (и других IDE этого производителя) мне уже привычны, для кого-то могут быть неочевидными. Все мы уже взрослые, опытные, образованные и поэтому мануалы читаем только когда что-нибудь уже сломалось. А то бы и так знали все эти мелочи, а не находили опытным путем, или подглядев у кого-нибудь.
В общем, в этой заметке я покажу несколько маленьких, но очень лично для меня удобных трюков, хоткеев и фич, которые есть в PHPStorm, а в Нетбинсе нет. Или есть, но работают противоестественным образом. Или надо мануал читать, чтоб их найти.
Если есть что добавить, прошу писать в комменты, всем будет полезно.
Важное уточнение: если я говорю про хоткей (он же шорткат), то есть про комбинацию кнопок — она по умолчанию у вас может быть выключена. В таком случае нужно искать её в настройках IDE, благо там есть поиск по всем существующим настройкам.
Extend selection
Первая мелочь — расширение выделенного текста. Позволяет повторным нажатием выделить сначала слово на текущей позиции курсора, и затем расширять выделение, захватывая все больше текста с каждым нажатием. Вот так:
У меня привязано к Ctrl+E
. Пользуюсь постоянно.
Вкладки
Не менее постоянно пользуюсь вертикальным разделением файлов. Cлева пишу, справа подглядываю, слева тест, справа код, всякое такое.
Поэтому у меня заданы 2 хоткея: Alt + Ctrl + V
для создания вертикального разделения и Alt + Ctrl + O
для переноса открытой вкладки влево-вправо. Называются Split vertically и Move to opposite group соответственно.
Кстати, если кто не знает, помимо перетаскивания файлов из левой части сплита в правую и обратно, вы можете перетащить файл на второй монитор, и там он откроется просто отдельным окном. Которое потом тоже можно делить на части.
Скобки и кавычки
Великолепная фича, которую можно включить в настройках, называется Surround selection on typing quote or brace. Выделяешь текст, нажимаешь кавычку (одинарную, двойную, обратную), или скобку (круглую, квадратную, фигурную) — и выделенный текст оборачивается в кавычки или скобки. Особенно удобно в мультикурсорном режиме (см. дальше) выделять слова и превращать их в элементы массива.
Более того, если выделить уже обернутый текст вместе со скобками или кавычками и нажать на другую скобку или кавычку — оборачивающие символы изменятся. То есть 'текст' превратится в "текст".
Только вот когда пытаешься фигурные скобки заменить круглыми, он их не меняет, а добавляет обертку. Но все равно прикольно.
Плагин CamelCase
Нашел относительно недавно. Позволяет по нажатию заданного хоткея переключать написание выделенной переменной (переменных) между snake_case, CamelCase и kebab-case.
Tab и Enter в автодополнении
Когда выбираешь что-то из списка появившегося автокомплита, если нажать Enter — выбранный идентификатор (класс, метод, переменная) просто вставится в текст. А вот если нажать Tab — он при вставке заменит текущий идентификатор. Примерно так:
Отладка и docker
Для работы я постоянно использую контейнеры докер. Когда нужно отлаживаться через xdebug — можно пробросить отладку по ssh-туннелю.
Перемещение кода
Очень удобные хоткеи — Ctrl+↑
и Ctrl+↓
. Позволяют перемещать строку, выделенный текст или активный блок кода вверх и вниз по текущему файлу.
Если выделен блок кода — переместится весь блок. Если ничего не выделено — переместится текущая строка. Если текущая строка — это название метода или начало блока кода (например, цикл), тогда переместится весь метод или блок кода целиком.
Кстати, если текст не выделен, многие операции (например, cut или copy) по умолчанию применяются именно к текущей строке.
Мультикурсорность
Это великолепная фича, только ради неё уже стоит пользоваться PHPStorm. В Нетбинсе понять как она работает мне так и не удалось (она есть, но тупо не получается сделать то, что хочется). А тут работает просто отлично. Особенно отлично — в комбинации с вышеупомянутыми трюками: extend selection, оборачиванием в кавычки и скобки. Вот пример, объясняющий лучше слов, что это за зверь:
Чтобы фича работала, нужно включить 2 хоткея: включение/выключение режима и ручная установка курсоров (когда надо не подряд ставить). У меня это Ctrl+Shift+Insert
и Ctrl+Shift+Left Click
соответственно.
Поиск
Постоянно использую два супер-удобных шортката для быстрого поиска по проектам с большим количеством файлов.
Во-первых, Ctrl+N
— позволяет быстро перейти к нужному классу по имени. То есть поиск идет только среди имен классов.
И во-вторых, если нажать Shift-Shift-Shift
(три раза подряд шифт без промедления), появится поиск по всему. То есть введенный идентификатор (или его часть) будет обнаружен в названиях отдельных функций, классов, в именах файлов, и даже в селекторах CSS.
Отдельно приятно, что поиск работает не по четкому совпадению. Например, если ввести JobTest
, то найдется не только полное совпадение, но и JobsTest
, AddJobsTest
и JobIntegrationTest
(если они есть, конечно). Это весьма удобно, когда уже забыл, как в точности назвал файл, класс или функцию.
Тема оформления
Будучи традиционным цисгендерным мужчиной, не склонным ко всяким кинкам, тему я использую тёмную. Обычную, Darсula — можете видеть ее на примерах выше. Кажется, она была в стандартной поставке IDE, точно уже не помню. Но в экстремальных условиях — на улице, ярким солнечным днём — приходится, наложив на себя тройное крестное знамение, переключаться на дефолтную светлую тему.
Если у кого-то стоят более прогрессивные (тоже тёмные!) темы — делитесь ссылками. Спасибо!