如何在我按 [ENTER] 之前阻止 VS Code 的建议自动插入?

How to stop VS Code's suggestions from auto inserting before I press [ENTER]?

出于某种原因,当我在 VS Code 中编辑的 CSHTML 文件中使用 @ 符号时,它会立即弹出一个建议框。每次我键入 @{ ... } 时都会发生这种情况,只要我按下 { 键,它就会用 [=12= 替换当前文本].我找不到可以切换此行为的设置 ON/OFF。我假设它是 JavaScript 类型的 Intellisense 设置,因为我正在编辑 .cshtml 文件?

这很烦人,如果可能我想将其关闭,但我不想为编辑器完全关闭 IntelliSense。

配置 VS 代码片段功能的行为

您可以通过将以下内容添加到您的 settings.json 文件中来阻止它这样做

{
    "editor.acceptSuggestionOnCommitCharacter": false
}

什么是 "editor.acceptSuggestionOnCommitCharacter"


下面的定义是“semi-official”,因为它来自 VS Code 的 #default-settings 文档页面。你可能想看看,这是一个很好的资源。

"The "editor.acceptSuggestionOnCommitCharacter" setting Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (;) can be a commit character that accepts a suggestion and types that character.

              — VS Code Docs

2BH,我真的不觉得 VS Code 文档给出的定义完全解释了那个设置是什么,因此;我在下面添加了输入。

你的写作 CSS,所以我假设你对 JS 或任何 C 风格的编程语言有所了解。我敢肯定大多数人都知道 Dot-notation Accessor(或 Access-operator)是什么。

在JavaScript中,当你写任何变量,或对象,或任何东西,并且它有一个你可以访问的属性时,你可以使用点访问器符号来访问属性 像这样。

sumObj.objProperty

好吧,在 VS Code 中,当智能感知检测到或以某种方式知道有一个 属性 您可以访问时,您只需按点“.”,而不用完成整行的输入。它将自动附加 属性。如果有不同的属性,您可以使用箭头键浏览要插入的检测到的智能感知 属性,然后按点。如果您没有完成输入 sumObj 部分,并且智能感知猜测这就是您正在输入的内容,您可以再次按“。”完成 sumObj,然后属性列表将 pop-up 你可以 select 一个。

我已经有一段时间没写 CSS 了,但我想您的建议在您按下 { 键时自动完成的唯一原因是因为这个功能。



替代解决方案:

如果你想保留这个功能,那么你可以尝试使用下面的设置。

  {
      "editor.suggest.insertMode": "insert"
  }

上面的设置更改了建议小部件在您按 enter 键时的行为。 "editor.suggest.insertMode" 接受两个不同的参数:

  1. "insert"
  2. "replace"

您似乎已将 VS Code 配置为 "replace" 提示 suggestion-snippet 的代码。换句话说,如果您键入 string.l,建议小部件显示 length,然后您输入 select length,您最终会得到 string.length。前面的示例说明了为什么 replace 有时很好用。但是,如果您键入 "for(" 并弹出 "int i=0; i < X; i++",则替换提示该建议的 "for(" 文本将导致语法错误并显示为红色。


您也可以禁用片段:

下面的设置在添加到您的 settings.json 文档时将禁用设置和 emetts。就个人而言,我并没有那么多地使用建议。有时我会打开它们,有时我会关闭它们,这取决于项目。

  {
      "editor.suggest.showSnippets": false,
      "editor.snippetSuggestions": "none",
      "emmet.showSuggestionsAsSnippets": false
  }