【问题标题】:How do I disable IntelliSense in comments in Visual Studio Code?如何在 Visual Studio Code 的注释中禁用 IntelliSense?
【发布时间】:2017-04-29 09:52:59
【问题描述】:

我正在使用 Visual Studio Code,主要用于 PHP。每次我点击 . 时,IntelliSense 都会启动并为我提供 PHP 全局变量和函数,从 $_COOKIE 开始。我通常知道我想要什么全局或函数,所以有点烦人。当我在评论区(/* ... */// ...)中时,甚至会发生这种情况,这更烦人。我大部分时间都花在了回去删除$_COOKIE上。

一个例子(不是 PHP,但你明白了):

我试过禁用它as suggested in the docs:

// Controls if quick suggestions should show up while typing
"editor.quickSuggestions": false,

// Controls if suggestions should be accepted with "Enter" - in addition to "Tab". Helps to avoid ambiguity between inserting new lines and accepting suggestions.
"editor.acceptSuggestionOnEnter": true,

// Controls the delay in ms after which quick suggestions will show up.
"editor.quickSuggestionsDelay": 10000,

// Enable word based suggestions
"editor.wordBasedSuggestions": true

...但这绝对没有任何效果。当我击中点时,我仍然得到列表。从1001000 的延迟增加也没有效果。

  1. 如何在代码 cmets 中关闭 IntelliSense?
  2. 如何在点击 . 时禁用 IntelliSense,并在点击 Ctrl+Space 时显示它? (见下面的更新 2)
  3. 如何完全禁用 IntelliSense,至少对于 PHP 而言?

更新:here 所述,禁用触发字符的快速建议是通过以下方式实现的:

// Controls if suggestions should automatically show up when typing trigger characters
"editor.suggestOnTriggerCharacters": false

但是,上面提到的其他选项仍然没有任何作用。

更新 2: 将其添加到 keybindings.json 文件中为 possible to mess with the . binding

{
    "key": ".",
    "command": "x",
}

但是,这会导致屏幕顶部出现一条警告消息,显示“找不到命令 'x'”。如果您将其留空或尝试将 null 传递给 command,它仍然不起作用,因为它不会覆盖默认键绑定。根据文档,可以通过在某个操作前加上- 来禁用它,但这对我不起作用:

"command": "-^acceptSelectedSuggestion"

"command": "-acceptSelectedSuggestion"

在任何一种情况下,acceptSelectedSuggesdtion 都不是我点击 时正在执行的命令。,它可能更像是:

"command": "-editor.action.triggerSuggest"

但这也不起作用。

【问题讨论】:

  • 另请参阅github.com/Microsoft/vscode/issues/1657,了解 cmets 中的智能感知错误。听起来像“不会修复”,这是非常可悲的。然而,它是一个非常痒痒的痒,而且 IDE 是开源的,所以肯定有人会在某个时候用补丁刮掉它!
  • 快到 2018 年了,我还要回去删除$_COOKIE

标签: php intellisense visual-studio-code


【解决方案1】:

自 2017 年 3 月或 4 月以来,此问题已得到修复,并且默认值已更改为 cmets 中不自动完成。默认为:

"editor.quickSuggestions": {
  "other": true,
  "comments": false,
  "strings": false
},

我的设置中没有明确显示,只是用一个新的 PHP 文件进行了测试,我可以输入 global. 然后空格,并且不会自动完成任何内容。 (我尝试了主代码和 cmets。)我确实看到 $COOKIE 作为第一个建议弹出,但我需要使用向上/向下箭头,然后输入以将其引入。

啊哈,global. 然后 ENTER 确实给了我global.$COOKIE(即使在 cmets 中,这有点奇怪)。我可以解决这个问题:

"editor.acceptSuggestionOnEnter": "off",

要查看您可能想要触摸的其他设置,请转到设置页面并在搜索框中输入“建议”。每个都有评论。例如。 "editor.suggestOnTriggerCharacters": false, 完全摆脱了自动建议。

您也可以只为一种语言指定设置,例如

"[php]":  {
  "editor.suggestOnTriggerCharacters": false,
},

【讨论】:

    【解决方案2】:

    尽管有Darren Cook's answer 和文档,editor.quickSuggestions 设置对因触发字符而弹出的建议没有任何作用(请参阅this issue on GitHub)。这些似乎受制于自己的规则。也就是说,当在字符串中输入触发字符时,无论您在editor.quickSuggestions 中说什么,您永远不会得到建议;当在评论或“其他”中输入触发字符时,您总是会收到建议,无论您在 editor.quickSuggestions 中说什么。

    因此,摆脱我所谓的“触发字符建议”(这是迄今为止最烦人的一种!)的唯一可靠方法是使用专门用于它的设置:

    "editor.suggestOnTriggerCharacters": false
    

    如果有人可以就如何发现触发字符,或者更好的是如何指定它们发表评论,我会很乐意编辑我的答案以考虑到这一点.

    请注意,由于实际将您键入的字符与已知模块、变量、函数等匹配而弹出的建议,仍由editor.quickSuggestions控制, em> editor.suggestOnTriggerCharacters.

    【讨论】:

    • 这太烦人了。当我在 PHP 的文档注释中键入 * 时,它暗示了巨大的 cmets。绝对要关闭它。
    猜你喜欢
    • 2018-10-24
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2019-03-13
    • 2010-10-06
    • 2019-11-05
    • 2018-03-22
    • 1970-01-01
    相关资源
    最近更新 更多