Подтвердить что ты не робот

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

Скажем, я хочу ввести следующее в PhpStorm:

$longObjectName->propertyName = 'some value';

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

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

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

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

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

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

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

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

longOb-      // :(

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

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Например, с script следующим образом:

^.::
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

Ответ 3

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

Относительно "почему это было отключено/какие проблемы там, где было в прошлом":

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

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