Visual Studio代码用户代码段不起作用

4th*_*ace 24 visual-studio-code

我在VS Code中启用了默认的"log"代码段.我还添加了另一个片段.我输入前缀时都不显示.我已经设定editor.tabCompletion为真.

知道为什么这些不起作用?

Sia*_*Sia 43

有几种方法可以解决这个问题.问题是Intellisense正在阻碍或默认将您的片段放在列表的底部.

首先我玩了建议延迟,但后来我决定让Intellisense将我的片段放在snippetSuggestions用户偏好的建议列表的顶部:

{
  "editor.tabCompletion": true,
  "editor.snippetSuggestions": "top"
}
Run Code Online (Sandbox Code Playgroud)

  • 我也必须在 `editor.quickSuggestions` 中启用 `other`。我想我已经禁用了它,因为我不关心的一些图书馆有太多垃圾邮件。 (2认同)
  • 谢谢你!!我从 Atom 切换过来,在那里我的代码片段总是完美地工作(即使智能感知未能显示,也总是可以使用它们)。在 VSC 中,我遇到了智能感知并不总是出现(并且在没有出现时无法使用我的片段)以及我的片段不位于顶部的问题。这是一个理智的保护者。谢谢你! (2认同)

小智 23

有时显而易见的是首先被忽视.在启动VSCode并创建新文档(Ctrl + N)时,可能会出现片段不起作用的意外情况.检查VSCode编辑器的右下角,默认情况下会显示"纯文本"文件.使用片段将文件类型更改为您喜欢的语言.

这可能会克服一些不必要的麻烦;-)

  • 这就是为什么我的HTML emmet代码段无法正常工作的原因。我所有的用户`settings.json`都很好,但是我的VSCode编辑器将其预先判断为`Django HTML`。将其切换为HTML时,我需要将代码段功能恢复。 (2认同)

小智 15

为了与打字稿做出反应,我必须专门向范围添加“typescriptreact”。

 "scope": "javascript, typescript, typescriptreact"
Run Code Online (Sandbox Code Playgroud)

  • 就是这样!范围内的“typescript”无法识别 tsx 文件! (3认同)
  • 对于 jsx 和 tsx 文件,这个技巧解决了这个问题。其他人都不为我工作。 (2认同)
  • 这对我有用 **但是** 范围属性似乎仅在全局片段文件中有效。当尝试在 `javascriptreact.json` 中设置 `"scope": "javascript, javascriptreact"` 时(因为我的代码片段没有申请扩展名为 .js 的文件),VSCode 会警告“不允许使用属性范围”*。 (2认同)

Ale*_*kin 13

我不得不:

  1. 转到设置(Windows/Linux:文件 > 首选项 > 设置,macOS:代码 > 首选项 > 设置)并在搜索框中输入Quick ,然后单击在 settings.json 中编辑在此输入图像描述

  2. 添加

"editor.quickSuggestions": true
Run Code Online (Sandbox Code Playgroud)

在具有相应文件类型的部分下(在我的例子中为markdown):

更新您可能需要添加以下内容:

"editor.quickSuggestions": {
    "comments": "on",
    "strings": "on",
    "other": "on"
}
Run Code Online (Sandbox Code Playgroud)

而不仅仅是"editor.quickSuggestions": true,因为自我写原始答案以来格式可能已经改变。亲自检查一下并告诉我。


sun*_*eem 10

如果您尝试插入PHP代码段,值得注意的是您必须手动包含

<?php

在片段开始工作之前.

  • 这个。即使文档可能设置为“ PHP”,分配给PHP的代码段也仅在将前缀输入到&lt;/ php ...?&gt;标签中时才起作用。有点傻TBH。 (2认同)

Whi*_*bit 7

我真正发现的是,当您拥有php intelliSense并希望打开和关闭php标签时,我也将扩展名也添加到了html文件类型中。

   {
      "Open php tag": {
         "scope": "php, html",
         "prefix": "php",
         "body": [
           "<?php",
             "  $1",
           "?>"
        ],
        "description": "Opens php tags"
      }
   }
Run Code Online (Sandbox Code Playgroud)

这对我有用:)


小智 7

  1. 打开一个普通的 html 文件。
  2. 查看使用插件的右下角(例如:Django HTML)并单击它
  3. 将在 vscode 顶部打开一个窗口
  4. 点击“为.'html'...配置文件关联”
  5. 搜索“HTML”(在活动大写锁定中需要这个)
  6. 选择第一个选项

    https://i.stack.imgur.com/E5FyH.png https://i.stack.imgur.com/VhJ7n.png


Jon*_*lez 6

在我的情况下它不起作用,因为我在代码段的名称中有一个空格

{
  ...,
  "snippet name": { // it should be snippet_name. Notice the _
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

所以请确保:

  1. {name}.code-snippets.vscode文件夹下有一个文件
  2. 您的代码段名称不包含 spaces
  3. 您将您的语言包含在范围内。我必须同时添加typescripttypescriptreact


thu*_*hul 5

选择范围时,扩展名很重要。我最近从使用 .js 扩展名的 react 切换到使用 .tsx 扩展名的 typescript。我的代码片段说“javascript,typescript”,所以我以为我被覆盖了,但 tsx 文件实际上被认为是“typescriptreact”。我更改为以下内容,它开始处理我的 tsx 文件:

{   
    "Styled Component React Arrow Function With Default Export": {
    "scope": "javascript, javascriptreact, typescript, typescriptreact",
    "prefix": "scraf",
    "body": [
        "import React from 'react'",
        "import styled from 'styled-components/macro'",
        "",
        "const Container = styled.div`",
        "  display: flex;",
        "`",
        "",
        "const ${TM_FILENAME_BASE} = () => {",
        "  return (",
        "    <Container>",
        "     $1",
        "    </Container>",
        "  )",
        "}",
        "export default ${TM_FILENAME_BASE}",
    ],
    "description": "Styled Component React Arrow Function With Default Export"
}
Run Code Online (Sandbox Code Playgroud)


Lok*_*kua 3

当我创建第一个片段时,我也遇到了这个问题。我添加了片段,但什么也没发生。

重新启动 VS Code,它们开始工作。