Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有插入PHP';PhpStorm中代码完成时的对象运算符?_Php_Intellij Idea_Phpstorm - Fatal编程技术网

是否有插入PHP';PhpStorm中代码完成时的对象运算符?

是否有插入PHP';PhpStorm中代码完成时的对象运算符?,php,intellij-idea,phpstorm,Php,Intellij Idea,Phpstorm,假设我想在PhpStorm中键入以下内容: $longObjectName->propertyName = 'some value'; 看起来很无辜,不是吗?如果我开始键入longOb,代码完成将起作用,并提供了一个有用的建议$longObjectName,因为它存在于我的项目中的其他地方。我对自己说,“啊,太完美了,这正是我想要的”,所以我点击回车键或标签接受建议。在这一点上,我感到非常高兴 但是现在我想插入->,PHP的笨拙但熟悉的对象操作符。如果我手动输入,那就是整整三次击键(包括

假设我想在PhpStorm中键入以下内容:

$longObjectName->propertyName = 'some value';
看起来很无辜,不是吗?如果我开始键入
longOb
,代码完成将起作用,并提供了一个有用的建议
$longObjectName
,因为它存在于我的项目中的其他地方。我对自己说,“啊,太完美了,这正是我想要的”,所以我点击回车键或标签接受建议。在这一点上,我感到非常高兴

但是现在我想插入
->
,PHP的笨拙但熟悉的对象操作符。如果我手动输入,那就是整整三次击键(包括Shift),这让我有点难过。一种遥远的、烦人的怀疑开始进入我的脑海。“三次击键?这是什么邪恶的IDE?喷气式飞机上这些无情的独裁者是谁??”

当我在PhpStorm的“每日提示”对话中看到以下内容时,情绪的过山车继续着,给我黑暗的、莫诺凯人策划的世界带来了一丝希望:

使用代码完成时,可以接受当前高亮显示的 弹出列表中的选择,带有句号(
),逗号(
), 分号(
)、空格和其他字符

所选名称为 在编辑器中自动输入,后跟输入的字符

在JavaScript中,这意味着我可以键入
longOb
并点击。接受第一个代码完成建议并插入JS对象操作符,结果是
longObjectName.
,此时我可以继续键入属性名,并在不按Enter键的情况下整天自动完成。太神了甚至是革命性的

现在来看一些毁灭性的消息:它在PHP中似乎不起作用。(不要担心孩子们,这个悲惨的故事即将结束。)

如果我键入
longOb
,然后点击-,我会得到以下结果:

longOb-      // :(
我敢肯定,如果我尝试执行,PHP解释器不会很喜欢我

(旁注:,,和;表现出几乎相同的行为,与上面引用的提示相反。)

因此,如果我要让我的幻想世界成为现实,我会得到以下结果:

$longObjectName->[handy dandy code completion list, primed and ready for action]
那不是很棒吗

最后,我们得出了最终的问题,为那些懒得读我那充满动感、令人心碎的故事的人添加了一些多余的内容:

PhpStorm中是否有一个用于“接受当前突出显示的代码完成建议并插入PHP对象运算符(
->
)”的键盘快捷键?

或者这只是一个bug?

1)据我记忆所及,PHP代码要求删除这种补全(太不寻常了)。。但是我现在找不到这样的票(已经花了20多分钟了)。。所以我可能错了(这是很久以前的事了……所以我可能会被另一个代码完成改进搞糊涂了,它很难配置为只对PHP代码有不同的行为)

有点像“为什么它被禁用/过去哪里有什么问题”:

在任何情况下:要让它真正发挥作用,还有一个悬而未决的问题:(到目前为止只有1票)

2)没有“完成->”操作可用。相关提示:(star/vote/comment以获得进度通知)

您可以使用autohotkey()创建新的击键,并替换PHP对象运算符作为句号或其他任何内容

例如,对于这样的脚本:

^.::
Send ->
return
将在Windows中的任意位置将(ctrl+)替换为(->)

将取代。(句号)仅在PhpStorm窗口(或其他具有ahk_类SunAwtFrame的窗口)中带(->)。 使用Window Spy查看任何Windows窗口的ahk_类

您可以使用CTRL+。作为。(期间)


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

  • 转到编辑|宏|开始宏录制
  • 键入'->'
  • 使用右下角的按钮停止宏录制,然后随意命名
  • 为其指定快捷方式:
    • 转到文件|设置|键映射|宏|
    • 右键单击并选择“添加键盘快捷键”

  • 我选择了Ctrl+。作为捷径,现在我非常高兴。:)

    啊,当然!为什么我没有想到创建一个宏?我已经把我接受的答案改成了你的。(丹尼尔的自动热键想法也很有趣,但不是跨平台的。)回答很酷。有助于节省大量时间。
    #IfWinActive ahk_class SunAwtFrame
    .::
    Send ->
    return
    
    #IfWinActive ahk_class SunAwtFrame
    ^.::
    Send .
    return