Есть ли ярлык для вставки объекта объекта 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 (->
)"?
Или это просто ошибка?
Ответы
Ответ 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 (звезда/голос/комментарий, чтобы получить уведомление о прогрессе)