在 PHP 数组中按下制表符时,Sublime Text 3 中的自动完成错误

Posted

技术标签:

【中文标题】在 PHP 数组中按下制表符时,Sublime Text 3 中的自动完成错误【英文标题】:Bad autocompletion in SublimeText3 when pressing tab in PHP array 【发布时间】:2014-01-04 04:12:57 【问题描述】:

我正在使用 SublimeText3。

当我在php 中的array 中工作时,按Tab 提出的自动完成功能让我非常恼火。

我只是想添加一些表格,但每次我按Tab,sublimetext 都会向我提出建议:

array(<list>)
Create a PHP Array.

如果再次按下Tab,他就会使命题生效并写入文件&lt;list&gt;

我已经安装了这个插件:


    "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 forums 获得更好的结果,因为他们只专注于这个软件而不是所有的编程。 我没有答案,但这是由 SublimeCodeIntel 引起的。正如您所指出的,这令人非常沮丧。 我也很烦这个。除了试图摆脱这个(因为这似乎几乎不可能)之外,我没有更好的建议,而是用不同或更有用的东西覆盖这个功能?我不知道如何或做什么可以做到这一点,但如果它有助于阻止这种 事情的发生,只需从不同的角度看待它。或者可能有人可以解释 应该做什么,也许我只是用错了。 很高兴发现这个问题得到了回答。我的一天充满了数组,并且迅速发展了与数组/标签相关的愤怒。宁静! 【参考方案1】:

刚开始使用 Sublime Text 3,这个问题困扰了我几个星期。即使使用 "auto_complete_commit_on_tab": false 和 "tab_completion": false,它仍然存在。我最终在 Sublime 论坛中查找并找到 this thread,这建议您将此代码添加到您的 Key Bindings:

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

它实质上会重新映射您的 tab 键以强制使用 tab 而不是允许 sn-p 自动完成工作。

【讨论】:

这个解决方案很有帮助,但它会停用我所有的自动完成功能,我只想停用这个特定的自动完成功能,而不是全部。 谢谢谢谢谢谢!这让我发疯了。需要注意的是 "tab_completion": false 仍然需要设置它才能工作。【参考方案2】:

2014 年 1 月 29 日更新

在 Github 上,有人找到了比我之前发布的更好的解决方案。 New Solution.

打开 your_packages_folder/SublimeCodeIntel/codeintel2/tree_php.py 并将数组添加到第 140 行附近的工具提示忽略数组。

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

旧解决方案

我找到了temporary solution on github。

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

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

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

【讨论】:

SublimeCodeIntel/codeintel2/tree_php.py 在哪里?到处都找不到 如果你使用OSX,你可以试试~/Library/Application Support/Sublime Text 3/Packages/SublimeCodeIntel/libs/codeintel2/tree_php.py 在 Win7 上,我在 SublimeCodeIntel/libs/codeintel2/ 中找到了该文件。我删除了这些行并删除了 .codeintel 但它没有修复它。 我跪在地上哭了。 @aaronbauman 我通过包控制安装了这个,上面的更改将起作用,它只需要在更新通过时覆盖更改。这很痛苦,但它解决了问题,我认为这是值得的。

以上是关于在 PHP 数组中按下制表符时,Sublime Text 3 中的自动完成错误的主要内容,如果未能解决你的问题,请参考以下文章

Sublime_Tabs

如何强制 Sublime Text 每个制表符缩进两个空格?

在 PHP 中按用户删除帖子/条目

使用 OnKeyUp 在 TextBox 中按下 Enter 时避免 Windows 'Ding'

在 iOS 中按下按钮时打开另一个视图

在android中按下通知时如何打开片段页面