首页 > 解决方案 > 使用 API 以编程方式获取 Visual Studio 代码片段范围

问题描述

我可以获得片段的可用范围列表吗?

是否有任何本机功能可以控制要创建的文件和位置?

在此处输入图像描述

标签: visual-studio-codevscode-extensions

解决方案


片段的范围仅限于语言,并作为工作区的全局或本地引入 VS Code。语言可以通过异常贡献给 VS Code。通常通过在 中声明一种语言package.json,添加语法和片段文件。更新: 这里是如何通过您的扩展将片段添加到任何语言的指南。如果您按照指南向当前工作区添加一个片段,您会注意到在工作区.code-snippets的文件夹下创建了带有扩展名的.vscode文件。vscode.workspace.workspaceFolders因此,您可以使用和fs.readDirAPI枚举所有此类文件。

    vscode.workspace.workspaceFolders!.forEach(workspaceFolder => {
        const snippetFiles = fs.readdirSync(path.join(workspaceFolder.uri.fsPath, '.vscode'))
            .filter(el => /\.code-snippets$/.test(el));
    });

同样,全局片段作为.code-snippets文件添加到用户配置文件文件夹中 - 在 Windows 上看起来像这样:C:\Users\currentUser\AppData\Roaming\Code\User\snippets\*.code-snippets. 您可以在这两个位置扫描*.code-snippets文件以及以编程方式将此类文件添加到这些文件夹中。

这是如何通过文件将片段添加到范围的文档。似乎没有任何公共 API 可以以编程方式枚举所有此类片段文件。

但是,如果您想检索您发布的屏幕截图中的语言列表,请使用此 API:

vscode.languages.getLanguages()

如果您解释了您要达到的目标,这可能会有所帮助。你想找到一个特定的片段来自哪里来改变它吗?是否要向此列表中的语言添加片段?或者使用不在此列表中的语言?


推荐阅读