VSCode扩展开发,如何自定义按下菜单按钮向编辑器添加代码片段

VSCode扩展开发,如何自定义按下菜单按钮向编辑器添加代码片段?

extension.ts:

context.subscriptions.push(vscode.commands.registerCommand('chartjs.addChart', () => {
    // 调用什么指令
}));

// 导入VSCode API
const vscode = require('vscode');

// 激活扩展
function activate(context) {
    // 注册命令
    let disposable = vscode.commands.registerCommand('extension.insertSnippet', () => {
        // 获取用户的首选项配置
        const config = vscode.workspace.getConfiguration('myExtension');
        const snippet = config.get('snippet');

        // 获取当前编辑器
        const editor = vscode.window.activeTextEditor;

        // 插入代码片段
        editor.insertSnippet(new vscode.SnippetString(snippet));
    });

    // 添加命令到扩展上下文中
    context.subscriptions.push(disposable);
}
exports.activate = activate;

注册了一个名为extension.insertSnippet的命令,当用户按下按钮时,将调用该命令。在命令回调函数中,获取了用户的首选项配置(假设我们的扩展名为myExtension),然后使用editor.insertSnippet()方法向编辑器中插入代码片段。
要将自定义按钮添加到VSCode的菜单栏中,你需要在你的扩展的package.json文件中的contributes字段下添加一个menus项。下面是一个示例:

"contributes": {
    "menus": {
        "editor/title": [{
            "command": "extension.insertSnippet",
            "group": "navigation"
        }]
    }
}

在上面的示例中,将extension.insertSnippet命令添加到了编辑器标题菜单组中。当用户单击菜单按钮时,该命令将被执行,从而向编辑器中插入代码片段。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7696399
  • 你也可以参考下这篇文章:vscode 启动占满电脑内存,启动打开“欢迎界面”的解决办法
  • 除此之外, 这篇博客: VSCode 入门操作大全 + 实用插件推荐【零基础专属详细教程】中的 九:实用插件推荐 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    💹 vscode 给了很多的插件,上一版块的 括号区分就算一个,下面我介绍几个我很喜欢的插件建议大家下载使用,对编程效率可大大提升(下面的插件配置步骤和上一版块完全一样)


    • 第一个:browser preview,对于很多前端开发只有一个屏幕的小伙伴,来回切屏太麻烦,分屏能看到区域的又占用很多,不妨下载这个插件,可以让你的浏览器窗口实时显示在编译器上

    619722a49fe343368a1b657ff80a09c8.png

    •  第二个:edge for vscode,这个可以将浏览器控制台显示在编译器中,让你不用切换浏览器就能看到控制台数据输入输出

    3bdeb43052b2466b8c6f00f571ccb342.png

    •  第三个:mongodb for vscode,将关系数据库与vscoode编译器数据互通,大大提高编译效率

    187ce88340de47b09e4c2538b4b061f7.png

     还有更多有用插件以后会更新给大家

    f0551462ddea4672aeb5c8c320d9a006.gif

     


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^