PhpStorm: Tips and tricks. Часть 1

    Сегодня будем говорить о некоторых возможностях замечательной IDE PhpStorm. Программисты из компании Jetbrains вкладывают огромные силы в создание своего продукта, в результате мы имеем мощную и одну из лучших IDE для языка программирования php. Думаю времена, когда хотелось выделиться программированием в Notepad++, практически ушли. Разрабатывать на коленке современные большие проекты с множеством файлов крайне затруднительно без хорошего инструмента.

    Все hotkeys справедливы для Windows и думаю Linux версии, «Макосники» могут найти комбинации клавиш в соответствующем разделе настроек IDE


    Итак, поехали:

    1. Search Everywhere. Двойное нажатие клавиши Shift вызывает popup окно для поиска чего угодно и где угодно. Достаточно написать фрагмент искомого текста, и наша пчелка трудяга найдет вхождения, причем сгруппирует их в категории. Фрагменты, найденные в классах, файлах, символах и даже элементах меню. Быстро и удобно, не правда ли?
      Search Everywhere в действии
      image

    2. Поиск в окне. Находясь в окне со списком файлов проекта (Project), мы просто начинаем писать имя файла или папки, которое хотим найти. Найденные файлы и папки весьма недвусмысленно выделяются в списке. Клавишами вверх и вниз осуществляется навигация по результатам поиска.
      Поиск в окне в действии
      image

    3. Выход из настроек IDE клавишей Esc. Находясь в настройках, мы можем быстро закрыть окно нажав клавишу Esc, то есть нам не обязательно трогать мышь, пусть себе отдыхает.
    4. Навигация по инспекции кода. Справа от нашего кода, мы видим результат фоновой инспекции кода. IDE подсказывает нам об ошибках и неточностях в файле. Осуществлять навигацию между этими ошибками и замечаниями можно клавишей F2
      Навигация по инспекции кода в действии
      image

    5. Последние открытые файлы. Ctrl+E открывает popup окно с файлами, которые мы недавно открывали. Так же в этом окне можно начать писать имя интересующего нас файла, и IDE отфильтрует список.
      Последние открытые файлы в действии
      image

    6. Быстрая генерация phpDoc комментария. Набираем /** нажимаем Enter и конструкция комментария завершится автоматически. Если в методе или функции определены параметры и указаны типы, то IDE учтет эту информацию при генерации. А если имеется ключевое слово return, то даже попробует угадать тип возвращаемого значения
      Быстрая генерация phpDoc комментария в действии
      image

    7. Генератор кода. Жмем в файле Alt+Insert. В появившемся popup окне IDE предлагает нам переопределить метод, реализовать метод, добавить конструктор, геттеры и сеттеры, а так же phpDoc коментарии
      Генератор кода в действии
      image

    8. Refactor This. Ctrl+Shift+Alt+T В открывшемся окне, нам предоставляется богатый выбор по рефакторингу кода. Перед применением изменений, можно выбрать предварительный просмотр, чтобы оценить какие файлы будут изменены
      Refactor This в действии
      image

    9. Postfix Completion. Удобный инструмент, который появился в 9 версии IDE. Позволяет быстро писать конструкции типа if, if not и т.д.
      Перед вставкой авто дополнения набираем точку и IDE откроет popup окно с выбором для завершения вставки.
      Postfix Completion в действии
      image

    10. Productivity Guide. Данный раздел покажет вашу статистику использования различных “Фич”.Все данные представлены в виде таблицы с колонками: Feature – название, Group – категория, Used – какое количество времени вы ей пользовались, Last used – когда последний раз использовали. Табличку со статистикой можно отсортировать по каждой колонке. Этот раздел так же примечателен описанием различных возможностей, в котором указаны горячие клавиши для вызова.
      Productivity Guide в действии
      image

    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 52

    • UFO just landed and posted this here
        +16
        просто tab?
        • UFO just landed and posted this here
          0
          В PyCharm и куче других редакторов это обычно Tab.
            0
            Так же можно сразу убрать у выделенного текста табуляцию: Shift + Tab.
            +6
            ну а если по делу, то все это уже либо было, либо настолько старо (ну кроме постфикса, о котором, в общем-то, рассказывали в анонсе 9 версии), что хотелось бы узнать что-то новое и действительно полезное.

            habrahabr.ru/post/157409
            habrahabr.ru/post/212077
            habrahabr.ru/post/212153
              +4
              Так в 9-ке появился еще одна полезная фитча — редактируя имя тэга HTML в начале, автоматом он же редактируется и в конце…

              Например:

              <h3>текст</h3> Изменив <h3> на <h2> PhpStorm сам заменит </h3> на </h2>
                0
                Иногда эта фича начинает вести себя непредсказуемым образом, если рефакторишь объёмный кусок html, во время удаления лишних тегов, в момент невалидной структуры, она может «втихоря» переименовать родительский div к примеру в a. Легко упустить это из виду и отправить на продакшен. В остальном штука очень удобная.
                  0
                  Да, это не очень удобно.

                  Чтобы без проблем удалять обрамляющие тэги можно воспользоваться хоткеем C**+Shift+Del — он умеет вырезать врапперы, оставляя содержимое. В меню: Code -> Unwrap / Remove.

                  Обратное действие: Code -> Surround with (C**+Alt+T)
                0
                Поиск в окне работает не только для дерева файлов, но и вообще в практически всех панелях. Classmap, VCS, Code Coverage и т.д.
                Отдельно хочется упомянуть поиск по действиям (ctrl + shift + a) — если забыл как сделать CamelCase для выделенного текста или любое другое действие.
                  0
                  Возможно ли задать, переформатировать ли код при вставке из буфера обмена, индивидуально для каждого языка? Например, форматирование SCSS- или LESS-кода весьма полезно, а вот портить при вырезании/вставке аккуратно расставленные ранее выравнивающие пробелы (например, в списке объявлений переменных или при присваивании длинной строки с многострочной конкатенацией), например, в JS, превращая их в символ табуляции, нежелательно.
                    0
                    Отключить автовыравнивание по вставке и форматировать выделенный текст по ctrl+alt+L
                      0
                      Спасибо. Слишком хлопотно (сродни использованию впечатляющего сочетания клавиш Ctrl+Shift+Alt+V для вставки текста без изменений). Хотелось бы раздельного управления переформатированием при обычной (Ctrl+V) вставке кода на разных языках.
                    0
                    всегда было интересно, как открыть окно выбора файла, чтобы путь к нему тут же подставился в позицию курсора. К примеру, когда пишешь атрибут src="… Автодополнение вещь хорошая, но если путь глубокий — то не так удобно. Хотелось бы узнать, есть ли такая возможность, именно во всплывающем окне с горячей клавишей вызова, а не в автодополнении. Ну и ещё о том, как настроить базовый путь при такой генерации, чтобы он от корневой папки сайта отсчитывался, а не от С:/ ;)
                      +1
                      Нужно docroot папку жмякнуть правой кнопкой и выбрать Mark directory as > Resource root
                      +1
                      Дополнение к п.6: если в теле метода/функции над строкой, где происходит присвоение переменной, набрать /** и пробел, то получим комментарий phpDoc такого вида:
                      /** @var  $variable */
                      

                      Удобно задавать тип переменной (особенно класс), когда IDE не может этого определить по выражению.
                        0
                        Это не phpdoc, это vardoc.
                        +10
                        Выход из настроек IDE клавишей Esc
                        Вы серьезно считаете это «фичей»? Мне кажется это уже стандарт, в том числе на вебсайтах.
                        Я вам больше скажу — любое окно PhpStorm'a можно закрыть клавишей Esc.

                        А вообще, как уже говорили, слабоват мануал. Надеюсь в следующей части будет рассказано действительно редкие и полезные фичи.

                        Все hotkeys справедливы для Windows и думаю Linux версии
                        Раз уж беретесь статью писать, то уже не поленитесь и найдите хоткеи для всех. Иначе какой смысл статьи?
                          0
                          Ctrl+Q (Документация) по Esc не закрывается, а вот по Alt+F4 закрывается.
                            0
                            отключите Pinned Mode и будет закрываться по Esc
                          +1
                          Когда начинал пользоваться сабжем, не сразу нашел очень полезное сочетание: Ctrl+F12 — аналог сублимовского Ctrl+R, т. е. поиск по определениям символов в текущем файле. Зачастую удобнее, чем Shift+Shift (поиск в проекте). И туда же подсказка: там нельзя, как в сублиме, пропускать буквы при поиске, но можно, если при пропусках ставить пробелы.
                          (Я был бы благодарен, если бы какой-нибудь хороший человек сделал плагин, который при вводе букв в окошках Shift+Shift и Ctrl+F12 после каждой автоматом ставил пробел. Сам я не умею.)
                            0
                            Из удобных комбинаций могу отметить:

                            1. Cntrl + N поиск по имени класса
                            2. Cntrl + Shift + N поиск по имени файла

                            Удобно когда знаешь имя класса или файла и не хочется копаться в проекте.
                              0
                              Статья очень походит на перевод вот этого видео www.youtube.com/watch?v=J9emzl_VmIs
                              Если это так, то стоило бы указать ссылку на оригинал.
                                +1
                                Думаю времена, когда хотелось выделиться программированием в Notepad++, практически ушли.

                                Думаю, большинство из тех, кто пользуется Notepad++ или другими текстовыми редакторами, делают это не для того, чтобы «выделиться», а потому что им это удобно.
                                  0
                                  Скажите, а можно ли отлаживать консольные PHP-скрипты простым нажатием F5 (как это сделано в Komodo IDE) не переключаясь в браузер?
                                    0
                                    Отлаживать можно, но горячей клавиши по умолчанию для этого вроде бы нет.
                                      +1
                                      дебаг точно есть при запуске тестов в режиме дебага (Shift+F9) и при этом можно установить брейк-поинт и начинать дебажить там, где нужно

                                      Скрин

                                      кстати, запускается все это дело в таком виде

                                      /usr/bin/php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 [another arguments for start phpunit]
                                      

                                      как запускать с консоли чтобы PhpStorm ловил соединение от xdebug-а я не разобрался, но PhpStorm довольно просто позволяет запускать и дебажить консольные скрипты. проще всего — кликнуть ПКМ и найти в контекстном меню «Run» или «Debug». по идее должно быть два варианта у кажлого — запуск через браузер и запуск через CLI. выбираете второй вариант. автоматически создастся профиль для запуска и дебага этого скрипта. дальше ставите брейкпоинт и запускаете дебаг (Shift+F9)

                                      Изображения


                                        +1
                                        Я положил в ~/bin/phpx вот такое:

                                        XDEBUG_CONFIG=idekey=PHPSTORM /usr/bin/php $*

                                        Расширение настроено вот так
                                        xdebug.remote_autostart=off
                                        xdebug.remote_enable=On
                                        xdebug.remote_host="MY.IP.ADD.RESS"
                                        xdebug.remote_port=9000
                                        xdebug.remote_handler="dbgp"
                                        xdebug.remote_mode=req
                                        xdebug.idekey="PHPSTORM"
                                        


                                        image

                                        image
                                          0
                                          Проще всего дебажить консольные скрипты (на локальной машине с xdebug) можно так:
                                          • включаем пассивный debug-режим (Run — Start Listening For PHP Debug Connections или соответствующей кнопкой на панели)
                                          • Запускаем скрипт с аргументами: php -d xdebug.remote_enable=1 -d xdebug.remote_autostart=1 my_script.php

                                          xdebug.remote_enable=1 можно спокойно положить в php.ini, а remote_autostart я бы не советовал — пыха будет всегда ломиться в порт, даже когда не надо.

                                          Более «правильный» способ с указанием IDE Key приведен выше.

                                          А чтобы отлаживать по одной кнопке, достаточно создать debug-конфигурацию и запускать её, например, во встроенном терминале. Вообще без смены контекста будет.
                                            0
                                            мое мнение, что гораздо удобнее запускать и дебажить консольные скрипты именно через конфигурационный профиль в IDE как я описывал выше
                                        0
                                        Пункт 6 работает не только для php, но и js.
                                          +1
                                          Это все хоть и полезные, но довольно очевидные вещи, лучше бы собрать список менее очевидных полезных вещей, которые надо еще поискать, например
                                          1) Если выделить строку в окне редактора (можно кликом по левом полю) и нажать Ctrl+Alt+Shift+C или выбрать в контекстном меню Copy Reference — в буфер скопируется ссылка на текущую строку текущего файла типа Path/Class.php:123 — очень удобно для общения с другими разработчиками например, переход по этой ссылке осуществляется через Ctrl+Shift+N.
                                          2) Если подключен к проекту Git в контекстном меню при клике на левом поле окна редактора есть клевая вещь Annotate — можно смотреть кто и когда менял последний раз каждую строчку в файле.

                                          и т.д.
                                            0
                                            А как выделенный текст обрамить в кавычки, или обернуть скобками? Помню включал эту функцию, но сейчас что-то найти не могу.
                                              0
                                              del.
                                              ошибся веткой
                                                +3
                                                Ctrl+Alt+T / Cmd+Alt+T — для выделения скобками

                                                Settings/Smart Keys/Surround selection on typing quote or brace — для выделения кавычками (при нажатии на кавычку выделенный текст будет в них обернут)
                                                  0
                                                  Да, то что надо, спасибо!
                                                    0
                                                    О Боже. Я все это время страдал и унижался. Ленился погуглить. Спасибо большое!
                                                  +1
                                                  Из неописанного, чем пользуюсь:
                                                  Ctrl+Shift+A — Поиск по действиям меню (из File, Edit, View и т.д.)
                                                  Ctrl+Q — Открывает документацию по методу/функцией, на которой установлен курсор
                                                  Ctrl+Alt+T — Surround With диалог и там же Live Templates
                                                    +1
                                                    Ctrl+Click переходит к определению, иногда это не очень удобно, если в тайп-хинтах используются интерфейсы — вы пройдете в интерфейс. Чтобы увидеть его реализации — поставьте курсор на тип, нажмите Ctrl+Alt+B — если реализаций больше одной — вам покажет список, ну или сразу кинет к реализации.
                                                    0
                                                    Кстати, сегодня будет вебинар по новшествам 9-й версии.
                                                      +1
                                                      Есть ещё плагин «Key promoter». Смысл его в том, что если нажать мышкой какую-нибудь кнопку, у которой есть хоткей, то на время появится плашка с хоткеем
                                                      Скриншот
                                                      image
                                                        0
                                                        И он-таки достанет и заставит повесить горячие клавиши на всё, чем хотя бы 3 раза воспользовался.
                                                        0
                                                        Только про последние 2 узнал, всё остальное банальщина =).
                                                        из фич пользуюсь также CTRL + w — быстро выделяем слово, строку или еще что.
                                                          0
                                                          Умеет ли phpStorm удалять лишние пробелы при сохранении? И автоматом заменять пробелы на табуляцию для отступов?
                                                          Спасибо.
                                                            0
                                                            Пробелы на табуляцию — Edit/Convert Indent/To tabs
                                                            По поводу лишних пробелов, не очень понятно, что вы имеете ввиду. PhpStorm поддерживает автоформатирование Code/Reformate Code, он в том числе приводит в порядок пробелы
                                                            Чтобы настроить все это на сохранение, можно в Settings/Keymaps для Save All назначить комбинацию Ctrl+Alt+S, записать макрос Edit/Macros: Ctrl+A, Code/Reformate Code, Edit/Convert Indent/To tabs, Arrow Up, Arrow Down, Ctrl+Alt+S
                                                            и назначить этот макрос в Settings/Keymaps на комбинацию Ctrl+S
                                                              0
                                                              Это просто в Settings всё можно настроить, без макросов
                                                            +1
                                                            Советую посмотреть эту серию Laracasts
                                                            laracasts.com/series/how-to-be-awesome-in-phpstorm
                                                            тут очень наглядно и полезно все
                                                              0
                                                              Очень не хватало выделения столбцами после sublime (ctrl+shift+L).
                                                              Оказывается в PhpStorm еще проще: alt + выделение мышой
                                                                0
                                                                Осталось найти аналогию саблаймовской alt+shift+w
                                                                  0
                                                                  ctrl+alt+T?
                                                                  0
                                                                  Можно еще третьей кнопкой мыши (нажатым колесом) тащить курсор. Вообще, все это легко настраивается. А найти нужное действие (и подсмотреть клавиатурное сокращение) можно по ctrl+shift+a (вроде бы во всех стандартных раскладках).
                                                                  0
                                                                  Для тех, кто все время забывает сочетания клавиш, есть встроенная распечатывабельная подсказка: Help->Default Keymap Reference

                                                                  Only users with full accounts can post comments. Log in, please.