我想说我想在PhpStorm中键入以下内容:
$longObjectName->propertyName = 'some value';
似乎天真无邪,不是吗?如果我开始输入longOb
,代码完成就会启动并帮助提供$longObjectName
作为建议,因为它存在于我项目的其他位置。我想,对自己来说,#完美,这正是我想要的",所以我按 Enter 或 Tab 来接受这个建议。在这一点上,我感到非常高兴。
但是现在我想插入PHP ->
,这是一个笨拙但熟悉的对象操作符。如果我手动输入,三次完整击键(包括 Shift ),这让我觉得有点难过。一种遥远的,唠叨的怀疑开始进入我的脑海。 " 三次击键?这是什么样的邪恶IDE?谁是JetBrains这些无情的独裁者?"
当我在PhpStorm的每日提示对话框中看到以下内容时,情绪过山车仍在继续,给我黑暗的,Monokai计划的世界带来一个微不足道但仍然坚持的希望:
使用代码完成时,您可以接受当前突出显示的内容 选择弹出列表中的句点字符(
.
),逗号(,
), 分号(;
),空格和其他字符。所选名称是 自动输入编辑器,然后输入输入的字符。
在JavaScript中,这意味着我可以键入longOb
并点击。以接受第一个代码完成建议并插入JS对象运算符,从而生成longObjectName.
,哪一点我可以继续输入一个属性名称,并在没有按 Enter 的情况下全天自动完成。惊人。革命甚至。
现在有一些毁灭性的消息:它似乎不适用于PHP。 (烦恼不是孩子 - 这个悲惨的故事几乎就要结束了。)
如果我输入longOb
然后点击 - ,我就明白了:
longOb- // :(
我非常确定如果我尝试执行该操作,PHP解释器就不会非常喜欢我。
(旁注:。,,和; 表现出几乎相同的行为,与上面引用的提示相反。)
所以,如果我要让我的幻想世界变为现实,我会得到什么:
$longObjectName->[handy dandy code completion list, primed and ready for action]
那不是翻转真棒吗?
所以最后,我们得出了一个终极问题,为那些没有阅读我的动作包装,令人心碎的故事的人添加了一些冗余的东西:
PhpStorm中是否有单个键盘快捷键用于"接受当前突出显示的代码完成建议并插入PHP对象操作符(->
)"?
或者这只是一个错误?
答案 0 :(得分:19)
嗯,我通过录制宏然后用键盘快捷键绑定它解决了这个问题:
我选择了Ctrl +。作为捷径,现在我感到非常高兴。 :)
答案 1 :(得分:3)
您可以使用autohotkey(http://www.autohotkey.com/)创建新的击键并替换PHP Object Operator的句号或其他任何内容。
例如,使用如下脚本:
^.::
Send ->
return
将在Windows中的任何位置使用( - >)替换(ctrl +。)。
或
#IfWinActive ahk_class SunAwtFrame
.::
Send ->
return
将替换。 (句点)仅在PhpStorm窗口中使用( - >)(或者使用ahk_class SunAwtFrame的其他人)。 使用Window Spy查看任何Windows窗口的ahk_class类。
您可以使用CTRL +。作为。 (周期)
#IfWinActive ahk_class SunAwtFrame
^.::
Send .
return
答案 2 :(得分:2)
1)据我记得,这种完成被要求删除PHP代码(太不寻常)..但我现在找不到这样的票(已经花了20多分钟这...)所以我可能是错的(它已经是很久以前..所以我可能会对另一个代码完成改进感到困惑,这种改进很难配置为仅针对PHP代码执行不同的行为)。
有关与"为何被禁用/过去有什么问题":
无论如何:有一张实际让它正常工作的门票:http://youtrack.jetbrains.com/issue/WI-21481(到目前为止只有1票)。
2)没有"完成 - >"行动可用。相关票证:http://youtrack.jetbrains.com/issue/WI-17658(星级/投票/评论以获得进展通知)