在SublimeText3中,按下PHP数组中的tab键时自动完成出现问题

23

我正在使用SublimeText3。

当我在PHP中使用array时,通过按下Tab键提供的自动完成功能完全让我感到烦恼。

我只想添加一些制表符,但每次按下Tab键,SublimeText都会向我提供:

array(<list>)
Create a PHP Array.
如果他再次按Tab,他就会验证命题并写入文件<list>
我已经安装了这些插件:
{
    "installed_packages":
    [
        "Alignment",
        "ApacheConf.tmLanguage",
        "BracketHighlighter",
        "Comment-Snippets",
        "Comments Aware Enter",
        "eZ Publish Syntax",
        "HTML5",
        "jQuery",
        "LESS",
        "SublimeCodeIntel",
        "sublimelint",
        "Symfony2 Snippets",
        "Theme - Soda",
        "Twig"
    ]
}

如果有人知道如何禁用这个不好的建议或者如何更正它?

谢谢。


我以前遇到过包和自动完成的问题。类似但不完全相同。我不认为我有你所拥有的任何包,但最终我删除了其中一个或两个,直到问题消失。由于您知道您拥有哪些软件包,因此您可以尝试删除一个或两个软件包,查看问题是否仍然存在,并重复此操作直到问题消失。此外,您可能会从sublime论坛获得更好的结果,因为它们专注于这个软件而不是所有编程语言。 - Jonathan Kuhn
1
我对此无法回答,但这是由SublimeCodeIntel引起的。正如您所指出的那样,这非常令人沮丧。 - John Blackbourn
我也对此感到非常困扰。我没有更好的建议,除了也许不是试图摆脱这个问题(因为那似乎几乎不可能),而是用不同或更有用的东西来覆盖这个功能?我不知道怎样或者可以用什么做到这一点,但是如果从不同的角度来看待它,是否有助于阻止这个 <list> 事情发生。或者可能有人解释一下 <list> 应该做什么,也许我只是用错了。 - solepixel
非常高兴找到这个问题并得到了答案。我今天一直在处理数组,而且很快就会产生与数组/标签相关的愤怒情绪。平静! - Tim Ogilvy
2个回答

29

更新01-29-14

在Github上,有人发现了比我之前发布的更好的解决方案。新解决方案

打开your_packages_folder/SublimeCodeIntel/codeintel2/tree_php.py文件,在第140行左右的tooltip ignore数组中添加array。

php_ignored_calltip_expressions = ("if", "elseif",
                                   "for", "foreach",
                                   "while",
                                   "switch",
                                   "array"
                                   )

旧解决方案

我在 github 上找到了一个临时解决方案

在 SublimeCodeIntel/codeintel2/tree_php.py 中注释或删除第 100 和 101 行。

"array": "array(<list>)\n"
"Create a PHP array.",

然后在您的OS X用户目录中删除~/.codeintel文件夹,不确定此缓存在Windows上的位置。


1
SublimeCodeIntel/codeintel2/tree_php.py在哪里?我找不到它。 - Claire
3
如果您使用的是OSX操作系统,可以尝试访问~/Library/Application Support/Sublime Text 3/Packages/SublimeCodeIntel/libs/codeintel2/tree_php.py。 - Jason McClellan
在Win7上,我在SublimeCodeIntel/libs/codeintel2/中找到了该文件。我删除了这些行并移除了.codeintel,但它并没有解决问题。 - Mihai Scurtu
在Sublime Text 3中,软件包是作为二进制文件安装的(通过Package Control),因此这个解决方案不适用。 - aaronbauman
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Matthew Nie
显示剩余2条评论

1

我刚开始使用Sublime Text 3,这个问题已经困扰我几周了。即使设置了"auto_complete_commit_on_tab": false和"tab_completion": false,它仍然存在。最终我在Sublime论坛上找到了this thread,它建议你将以下代码添加到你的按键绑定中:

{ "keys": ["tab"], "command": "insert", "args": {"characters": "\t"}, "context":
    [
        { "key": "auto_complete_visible" },
        { "key": "setting.tab_completion", "operator": "equal", "operand": false }
    ]
}

它基本上重新映射了您的“Tab”键,强制使用制表符而不是允许片段自动完成。

1
这个解决方案很有帮助,但它会停用我所有的自动完成功能,而我只想停用这个特定的自动完成功能,而不是全部停用。 - kaal
谢谢,谢谢,谢谢!这让我疯了。需要注意的是,仍然需要设置“tab_completion”: false 才能使其正常工作。 - Lukas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接