在PhpStorm代码完成时是否有插入PHP对象操作符的快捷方式?

时间:2014-03-19 17:40:54

标签: php intellij-idea phpstorm

我想说我想在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对象操作符(->)"?

或者这只是一个错误?

3 个答案:

答案 0 :(得分:19)

嗯,我通过录制宏然后用键盘快捷键绑定它解决了这个问题:

  1. 转到编辑|宏|启动宏录制
  2. 键入' - >'
  3. 使用右下角的按钮停止宏录制,然后根据需要为其命名。
  4. 为其指定快捷方式:
    • 转到文件|设置|键图|宏|
    • 右键单击并选择“添加键盘快捷键”
  5. 我选择了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(星级/投票/评论以获得进展通知)