Предположим, я хочу напечатать следующее в 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 ( ->
)»?
Или это просто ошибка?
Ну, я решил эту проблему, записав макрос, а затем привязывая его с помощью сочетания клавиш:
Я выбрал 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 (звезда / голос / комментарий, чтобы получить уведомление о прогрессе)