Есть ли ярлык для вставки объекта объекта PHP при завершении кода в PhpStorm?

Предположим, я хочу напечатать следующее в PhpStorm:

$longObjectName->propertyName = 'some value'; 

Кажется, невинно, нет? Если я начну вводить longOb , завершение кода начнется и будет полезно предоставлять $longObjectName в качестве предложения, поскольку оно существует в другом месте моего проекта. Я думаю про себя: «Совершенно, это именно то, что я хотел», поэтому я нажал Enter или Tab, чтобы принять предложение. На данный момент я чувствую себя очень счастливым.

Но теперь я хочу вставить -> , неудобный, но знакомый объектный оператор PHP. Если я наберу его вручную, это три целых нажатия клавиш (включая Shift ), что заставляет меня чувствовать себя немного грустно. На меня начинает проникать далекое, вопиющее сомнение. « Три нажатия клавиш: что это за злая IDE? Кто эти безжалостные диктаторы на JetBrains?»

Эмоциональные американские горки продолжаются, когда я вижу следующее в диалоговом окне «Совет дня» PhpStorm, в результате чего в моем темном мире Monokai-schemed появляется ненавязчивый, но настойчивый проблеск надежды:

При использовании «Завершение кода» вы можете принять выделенный выделенный всплывающий список во всплывающем списке с символом периода ( . ), Запятой ( , ), точкой с запятой ( ; ), пробелом и другими символами.

Выбранное имя автоматически вводится в редакторе, за которым следует введенный символ.

В JavaScript это означает, что я могу напечатать longOb и нажать . как принять первое предложение о завершении кода, так и вставить оператор объекта JS, что приведет к longObjectName. , в этот момент я могу продолжать печатать имя свойства и продолжать автозаполнение в течение всего дня, не нажимая Enter . Удивительно. Даже революционный.

Теперь о некоторых разрушительных новостях: он, похоже, не работает на PHP. (Не беспокойтесь, дети – эта мучительная сказка почти готова.)

Если я longOb а затем нажимаю - я получаю следующее:

 longOb- // :( 

Я почти уверен, что интерпретатор PHP не понравится мне, если я попытаюсь выполнить это.

(Боковое примечание: . ,,, И ; демонстрируют почти то же поведение, в отличие от цитированного подсказки дня выше).

Итак, вот что я получу, если бы я воплотил свой фантастический мир в реальность:

 $longObjectName->[handy dandy code completion list, primed and ready for action] 

Разве это не было бы потрясающим ?

Итак, наконец, мы достигли конечного вопроса, добавив лишний материал для тех, кто не удосужился прочитать мою футуристическую, сердитую историю:

Есть ли в PhpStorm одна комбинация клавиш для «Принять текущее предложение о завершении кода и вставить оператор объекта PHP ( -> )»?

Или это просто ошибка?

Ну, я решил эту проблему, записав макрос, а затем привязывая его с помощью сочетания клавиш:

  1. Перейдите в Редактировать | Макросы | Запуск макросъемки
  2. Тип '->'
  3. Остановите запись макроса, используя кнопку в правом нижнем углу, а затем назовите ее, как хотите.
  4. Назначить ярлык для него:
    • Перейти к файлу | Настройки | Клавиатура | Макросы |
    • Щелкните правой кнопкой мыши и выберите «Добавить ярлык клавиатуры».

Я выбрал Ctrl +. как ярлык, и теперь я более чем счастлив. 🙂

Вы можете использовать autohotkey ( http://www.autohotkey.com/ ) для создания новых нажатий клавиш и замены PHP Object Operator на период или что-либо еще.

Например, с таким скриптом:

 ^.:: Send -> return 

Будет заменен (ctrl +.) На (->) в любом месте Windows.

Или

 #IfWinActive ahk_class SunAwtFrame .:: Send -> return 

Будет заменен. (период) с (->) только в окне PhpStorm (или другие с ahk_class SunAwtFrame). Используйте Window Spy для просмотра класса ahk_class любого окна Windows.

Вы можете использовать CTRL +. в виде . (Период)

 #IfWinActive ahk_class SunAwtFrame ^.:: Send . return 

1) Насколько я помню, такое завершение было прошено удалить для PHP-кода (слишком необычно) .. но я не могу найти такой билет прямо сейчас (уже трачу более 20 минут на это). Поэтому я могу ошибаться ( это было довольно давно .. так что, возможно, я путаюсь с другим улучшением завершения кода, которое было жестко настроено на поведение по-разному только для PHP-кода ).

Вид связан с «почему это было отключено / какие проблемы там, где в прошлом»:

В любом случае: есть открытый билет, на самом деле он работает: http://youtrack.jetbrains.com/issue/WI-21481 (только 1 голос до сих пор).

2) Нет доступных действий «complete with ->». Связанный билет: http://youtrack.jetbrains.com/issue/WI-17658 (звезда / голос / комментарий, чтобы получить уведомление о прогрессе)