【问题标题】:Bad autocompletion in SublimeText3 when pressing tab in PHP array在 PHP 数组中按下制表符时,Sublime Text 3 中的自动完成错误
【发布时间】: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 引起的。正如您所指出的,这令人非常沮丧。
  • 我也很烦这个。除了试图摆脱这个(因为这似乎几乎不可能)之外,我没有更好的建议,而是用不同或更有用的东西覆盖这个功能?我不知道如何或做什么可以做到这一点,但如果它有助于阻止这种 事情的发生,只需从不同的角度看待它。或者可能有人可以解释 应该做什么,也许我只是用错了。
  • 很高兴发现这个问题得到了回答。我的一天充满了数组,并且迅速发展了与数组/标签相关的愤怒。宁静!

标签: php autocomplete sublimetext3 sublime-text-plugin


【解决方案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 我通过包控制安装了这个,上面的更改将起作用,它只需要在更新通过时覆盖更改。这很痛苦,但它解决了问题,我认为这是值得的。
猜你喜欢
  • 2015-11-22
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 2017-04-01
  • 2019-03-16
  • 2019-03-28
  • 2016-09-16
  • 2017-05-12
相关资源
最近更新 更多