Пользователь
12,8
рейтинг
10 февраля 2014 в 17:29

Разработка → PhpStorm — повышаем производительность (клавиатурные сокращения). Часть 1 перевод tutorial

imagePhpStorm — повышаем производительность (плагины и темы оформления). Часть 2

У всех нас есть любимые IDE или редакторы в которых мы пишем код. Для меня это PhpStorm, и потребовалось некоторое время, чтобы освоить все клавиатурные сокращения и ускорить свой рабочий процесс. В этой статье я поделюсь с вами некоторыми сочетания клавиш и советами, которые возьмут на себя часть рутинной работы, если вы тоже делаете свою работу в этой IDE. Эта статья была частично вдохновлена этим Reddit тредом, и я буду упомянать и демонстрировать некоторые трюки найденные там.

Обратите внимание, что я разрабатываю на Linux в Vagrant, размещенном в Windows, я буду использовать клавишу CTRL вместо CMD. Если вы работаете в OS X, замените CTRL на CMD.

Клавиатурные сокращения и хаки


PhpStorm позволяет настроить себя практически до бесконечности — вы можете заточить этот инструмент под себя так, что постороннему может показаться, что это совсем другая IDE.

(осторожно, много gif изображений)

Давайте посмотрим, чем мы можем воспользоваться: (в скобках рядом с сокращениями указаны названия функций в keymap)

  • CTRL+ALT+L (Reformat Code), одна из моих самых используемых комбо, форматирует ваш код в соответствии с выбранными настройками оформления кода:
    image

    К тому же, как вы можете видеть во всплывающем окне, которое появляется в приведенной выше анимации, вы можете выбрать переформатирование всего проекта. Если есть необходимость использовать эту возможность часто и при этом вы не так много работаете над проектами других людей, то возьмите на заметку — есть возможность связать макросом CTRL+S и автоформатировать код при каждом сохранении. Но стоит заметить, однако, что если вы работаете над проектом с кем-то еще, это может привести к слишком частым изменениям форматирования кода и загрязнить систему контроля версий.

    Если вы находитесь в Linux, комбинация CTRL+ALT+L уже может быть связана с «Блокировкой экрана», и вы должны будете отвязать его в системных настройках или изменить его в настройках PhpStorm.

  • Нажав CTRL+SHIFT+Backspace (Last Edition Location), или кнопками мыши «Вперед» и «Назад» (если они у вас есть), вы перейдете к предыдущему месту редактирования. Это очень полезно при работе с большими файлами:
    image

  • Удержание CTRL при наведении курсора на переменные или методы даст вам дополнительную информацию, а Ctrl+клик на переменной или методе, или нажатие CTRL+B (Declaration), когда курсор установлен на методе или на переменной приведет вас прямо туда, где он определен:
    image

  • CTRL+Пробел (Basic) вызовет всплывающее окно с подсказками, если вы случайно закрыли его или оно какой-то причине не открылось:
    image

  • Когда PhpStorm обнаруживает какие-либо проблемы, он подчеркнет проблемную область и вызывает всплывающую подсказку поверх него при наведении мыши или курсора клавиатуры в этой области. Нажав на неё или нажав Alt+Enter (Show Intention Actions) будет предложено решение. Это поведение можно изменить выключив отчеты об ошибках (я не рекомендую так делать):
    image

  • CTRL+N (Class), и CTRL+SHIFT+N (File) позволит вам мгновенно перемещаться в любую часть какого-либо класса или файла проекта:
    image

    поиск является нечетким, а также поддерживает номера строк — вы можете использовать сокращения :XX, где ХХ — номер строки:
    image

  • PhpStorm запоминает несколько последних значений буфера обмена — вы можете нажать CTRL+SHIFT+V (Paste from History), чтобы вызвать всплывающее окно, которое позволит вставить ранее использованное содержимое буфера обмена.

  • Если вы влюблены в способность Sublime производить поиск по командам самой IDE, то вы можете делать это и в PhpStorm — CTRL+SHIFT+A (Fine Action) вызовет всплывающее окно поиска команд. Забыли сокращение для переформотирования кода? Просто нажмите CTRL+SHIFT+A и наберите «Refor ..»:
    image

  • Можно сгенерировать HTML используя Emmet встроенный в PhpStorm. Просто введите div#myDiv>span.mySpanClass>ul>li*5 и нажмите TAB и получите:
    image

    Расширить эти возможности для любого языка можно добавив свои шаблоны в Settings -> Editor -> Live Templates. Подробное описани Emmet для CSS и HTML здесь.

  • Возможно несколько неинтуитивно, CTRL+W (Select Word at Caret) (который чаще всего используется для закрытия вкладки, так что вы можете переназначить его) будет выбирать блоки кода под курсором (слово, переменную, и т.д.). Повторение комбинации расширяет выбор, включая родительский узел, например:
    image

  • Контекстно-зависимое редактирование позволит вам редактировать фрагмент кода, написанный на другом языке в отдельном редакторе. Например, если у вас есть HTML фрагмент, содержащийся в PHP строке, нажмите Alt+Enter над этой строкой и выберите Edit HTML:
    image

  • Режим выбора колонки может быть вызван, удерживая среднюю кнопку мыши (колесико) и перетаскивая. Для меня это особенно полезно, когда нужно скопировать часть кода с глубоко отступом, но игнорируя ненужные пробелы:
    image

  • Нажатие Alt+Home (Jump to Navigation Bar) позволит использовать курсоры для перемещения по цепочке переходов в верхней части. ESC выводит из этого режима:
    image

  • Рефакторинг (переименование) переменные и применения изменений сразу во всех местах, которые используют — SHIFT+ALT+CTRL+T (Refactor This) вызов меню рефакторинга, как показано на на анимации ниже:
    image

  • CTRL+F12 (File Structure) вызовет всплывающее окно, которое позволит выбрать метод в текущем файле, к которому вы хотите перейти. Несмотря на то, что нет поле поиска, как только вы начнете печатать, выбор сузится до вариантов, которые вы ищите.
    image

  • Этот твит подсказывает нам, что теперь вы можете «искать везде», дважды нажав Shift. Это мощная смесь всех предыдущих поисковых сокращений, позволяющая найти все, что необходимо в любой части проекта или IDE — от IDE команд до классов и объявлений функций, а также многое другое.



Еще один пост о продуктивном использовании PhpStorm.
Перевод: Bruno Skvorc
@PopeyetheSailor
карма
57,2
рейтинг 12,8
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (57)

  • +3
    Double shift до сих пор иногда глючит: то курсор не ставится в popup, то само окно пропадает, иногда начинает мерцать.
    Ubuntu 12.04/Oracle Java 1.7/PhpStorm 7.1

    P.S. А за Ctrl + Shift + A спасибо. Не знал.
    • +2
      Точнее постоянно)
  • +11
    Думаю стоит указать что данные сокращения действуют практически во всех IDE от JetBrains. RubyMine, PyCharm и тд.
  • 0
    «Несмотря на то, что нет поле поиска, если вы просто начать печатать можно сузить выбор до именно того, что вы ищете.»
    Мощный перевод…
    • 0
      Поспешишь — людей насмешишь (
  • +1
    Надо бы переводчикам как-то взаимодействовать с авторами дайджестов, чтобы переводить статьи до их попадания в дайджест и, соответственно, прочтения :)
    • 0
      Мне, кажется, что переводчик как и мы с вами прочли эту статью благодаря дайджесту )
      • 0
        Так точно. zein это к тому написал, я думаю. Что после каждого дайджеста появляется несколько переводов статей из него. Что собственно и натолкнуло меня на мысль сделать это.
  • +1
    Ждем вторую часть :)
    Кстати, есть ещё очень удобное ctrl+shift+alt+n — но у меня в Fedora не отрабатывает одновременно 4 нажатия на клавиатуре :(
    • 0
      Сегодня-завтра будет. Хотел все одной частью, но понял что не одолею.

      не отрабатывает одновременно 4 нажатия
      переназначьте сокращение.
  • +4
    Спасибо за статью!
    А никто случайно не в курсе — можно ли настроить такое поведение: выделяем слово, нажимаем кавычку и это слово становится заключенным в кавычки? Очень не хватает после Aptana такой фичи.
    • +1
      Можно реализовать с помощью LiveTemplate + Wrap with livetemplate + быструю клавишу на всё это.
    • +4
      Settings > Editor > Smart Keys > Surround selection on typing quote or brace
      или Default settings лучше
      • 0
        Во! Большое спасибо!
  • –2
    Вы что в промте переводили?
    «и я будет упомянуть и демонстрации некоторые трюки найденных там»
  • 0
    Жаль нету фичи как в SublimeText, когда можно кликнуть, зажав CTRL, в нескольких местах и отредактировать их одновременно. Или есть?
    • 0
      shift + F6 нет?
      • 0
        SHIFT + F6, как я понял, выделяет все похожие переменные, чтобы переименовать их разом. Т.е. это что-то типа автозамены. Это совсем не то, что нужно.

        Вот например у меня есть пара картинок в HTML, у которых я хочу прописать одинаковый атрибут (допустим data-test):

        [img src=«some-image.png»| class=«some-class»]
        [img src=«some-other-image.png»| class=«some-class»]

        видите где стоят пайпы (типа курсоры)? Вот как так сделать в PhpStorm?

        Вот гифка как это выглядит в Sublime Text: hanselman.com/blog/content/binary/MultiEditForVS.gif
  • 0
    Товарищи, а никто случаем не знает, можно ли добавить исключения для встроенного инспектора?
    У меня tpl'ки хорошо вписываются под Smarty, но местами конструкции для моего шаблонизатора пишутся по другому. Из-за этого встроенный инспектор буянит.
    • 0
      Попробуйте вот так:

      image
    • 0
      По нажатию Alt+Enter открывается меню Intentions и там по идее можно для каждого случая сказать Suppress error message, если это то, что Вам нужно.
      • 0
        А в последних версиях (EAP) можно убирать ошибки для отдельных файлов, а не на глобальном уровне.
  • 0
    CTRL+N, и CTRL+SHIFT+N позволит вам мгновенно перемещаться в любую часть какого-либо класса или файла проекта:

    Двоеточие переводит к номеру строки, а можно как-то перейти к методу? Как, например, в Sublime Text по class@method или Crtl+R.
    • 0
      ctrl+shift+alt+n
      • 0
        Немного не то, это по всему проекту, Ctrl+12 — то, что нужно.
  • 0
    MacOS X 10.9, phpStorm 7.1/7.1.2 EAP. Не работает во всей 7-ой серии, кажись, отключение SmartKeys. А конкретно если то пункт: SmartKeys -> HTML/XML -> Automatically insert closing tag… Замучало уже совсем.

    <div></... и автозакрывашка..., как итог: <div></div>div>

    Пофиксите, плз… и добавьте в EAP хотя бы.
    • 0
      Блин, торможу, почему-то показалось, что это разработчики скинули пост, сорри. :)
  • 0
    Ctrl+Shift+Alt+T прекрасная менюшка быстрого рефакторинга, выноса переменной, метода и прочее.
  • 0
    help -> default keymap…
  • 0
    Очень люблю ctrl + alt + shift + N — поиск по символу (имени функции, метода, константы и т.п.).
    • 0
      Ну, дока большая, а статья в которой собраны изюминки — весьма может быть полезна, например раньше не знал про выьор блока методом многократного нажатия Select character at caret.
  • 0
    Если вы работаете в OS X, замените CTRL на CMD.

    Это применимо только к «Mac OS X» раскладке. А вот «Mac OS X 10.5+» отличается чуть больше чем полностью.

    ps: Было бы неплохо написать названия комбинации в меню настроек, что бы люди могли настроить под себя.
  • 0
    Недавно начал использовать PHPStorm, очень нравится.
    До сих пор правда не могу понять, как в JS можно убедить PHPStorm, что вот эти объекты, пришедшие из AJAX запроса и распарсенные из JSON, действительно содержат все эти поля, не отключая проверку индивидуально для каждого поля?
    Может, я чего-то не знаю?
    • +1
      Я обращаюсь к обьектам как к массивам, и шторм не парится.
      • 0
        Интересный подход, не подумал об этом. Спасибо :)
        Хотя конечно синтаксис выходит чуток более громоздкий.
    • 0
      Работаю в IntelliJ и тоже мучаюсь, когда подчеркивает некоторые поля в объектах. Обычно такое происходит, когда ключ добавляется как строка, т.е. obj['invalidKey']='someValue';
    • +1
      Нагуглил ответ на свой вопрос, может кому-то пригодится :)

      Создаем отдельный Content Root (Project Properties — Directories — New content root), чтобы не засорять продакшн дерево проекта.
      В нем создаем .js файлы, в которых описываем структуру объектов. Например:

      App.Type1 = {
         field1: 1,
         field2: 1,
         field3: 1
      };
      


      Дальше, в объявлении функции у аргумента можно указать в комментарии соответствующее имя объекта с описанием структуры.
      Пример:

      var foo = function(/*App.Type1*/obj, /*App.Type1[]*/arr) {
      
      };
      


      В случае второго аргумента, PHPStorm будет считать, что arr — массив из объектов такой структуры.
      Указывать тип нужно только один раз, в том месте, где объект берется с точки зрения PHPStorm «из ниоткуда», например, при получении из AJAX. В дальнейшем PHPStorm сам отслеживает передачу и использование переменных.
  • +1
    Нажал в Ubuntu CTRL+ALT+L, меня разлогинило :(
    • 0
      Я на всякий случай выделил в статье:
      Если вы находитесь в Linux, комбинация CTRL+ALT+L уже может быть связана с «Блокировкой экрана», и вы должны будете отвязать его в системных настройках или изменить его в настройках PhpStorm.

      Для себя я это решил изменением шортката на CTRL+ALT+SHIFT+L.
  • 0
    А кто-нибудь знает как PHPStorm заставить интерпретировать JS внутри тегов <% Template JS code here %>?
  • 0
    есть возможность связать макросом CTRL+S и автоформатировать кода при каждом сохранении

    Можете разжевать? Имеется ввиду задать для автоформатирования шорткат CTRL+S (два действия на одну комбинацию) или что-то другое?
    • 0
      Я это понял как — записать макрос, назначить ему какое-нибудь сокращение (сделал Ctrl+Alt+Shift+Z), а в поле «Second stroke» указать Ctrl+S. Но я сейчас попробовал, почему-то не отрабатывает по Ctrl+S (по Ctrl+Alt+Shift+Z срабатывает).
  • +1
    Было бы здорово чтобы Вы написали как собственно называются функции, которые вызываются приведёнными сокращениями.
    Например у меня переназначено Ctrl+W на закрытие таба и я не знаю как теперь найти функцию выделения, о которой Вы писал.
    Ну, допустим я нашел способ — включить дефолтную схему и там сделать поиск по сокращению, но было бы удобней сразу видеть это в статье.
    • +1
      Написать названия сокращений в keymap? Сейчас сделаю.
      • 0
        Да, именно
        • +1
          Готово. За поиск по сокращениям спасибо, не был в курсе. Если кто как и я не в курсе, то вот
  • –1
    Полтора года назад был пост с интересными комбинациями. А в этот пост бы еще сочетания для OSX добавить.
    • 0
      Готов принять в ЛК список команд с комбинациями, так как у меня не OS X, какая там раскладка по умолчанию я не в курсе, как клавиши называются и обозначаются тоже :)
    • 0
      А в Help->Default Keymap Reference у вас нет Mac-комбинаций?
  • +1
    Alt + Enter, прям из души в душу, спасибо!
  • 0
    Ctrl-Alt-L + Ubuntu — делает не реформат кода, а lock screen в KDE + Gnome + Gnome Fallback

    stackoverflow.com/questions/211043/disable-ctrl-alt-l-in-kde
    • +1
      Всего-то 1 раз это было упомянуто в статье и 1 раз в комментариях. ;)
  • 0
    Открыл для себя очень полезную фичу CTRL+ALT+L (Reformat Code) но варианты которые предлагает IDE не подходят, есть какая то возможность загрузить/использовать готовые стандарты кодирования?
    • 0
      Выбор из набора предопределенных, самых распространенных cs. Сохраняйте свою тему и правьте то, что не по нраву.
      Скриншот
  • 0
    Народ, кто в курсе, в восьмой версии phpStorm пропало автодополнение имен переменных внутри строк. Это баг или где-то что-то включить нужно?!
  • 0
    За ссылку docs.emmet.io/cheat-sheet особая благодарность!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.