You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VS Code扩展的上下文菜单中添加带勾选标记的布尔选项?

给VS Code扩展上下文菜单添加带勾选的布尔选项

要实现像内置菜单那样带勾选标记的布尔选项,核心是利用VS Code命令系统的toggle状态机制,具体步骤如下:

1. 在package.json中注册命令与菜单

首先在扩展的package.json里,先注册你的命令,再把它添加到目标上下文菜单(比如活动栏的右键菜单):

{
  "contributes": {
    "commands": [
      {
        "command": "myExtension.toggleFeature",
        "title": "启用我的功能"
      }
    ],
    "menus": {
      "activitybar/context": [
        {
          "command": "myExtension.toggleFeature",
          "group": "navigation"
        }
      ]
    }
  }
}

这里activitybar/context就是活动栏的右键菜单上下文,你可以根据需求换成其他上下文(比如编辑器右键、侧边栏右键等)。

2. 在扩展代码中实现toggle逻辑

接下来在你的扩展主文件(比如extension.js或extension.ts)里,注册命令时通过isChecked回调控制勾选状态,同时处理状态切换:

JavaScript示例

const vscode = require('vscode');

function activate(context) {
  // 用工作区配置存储状态,实现持久化
  const config = vscode.workspace.getConfiguration('myExtension');
  let isFeatureEnabled = config.get('featureEnabled', false);

  const toggleCommand = vscode.commands.registerCommand('myExtension.toggleFeature', () => {
    // 切换状态
    isFeatureEnabled = !isFeatureEnabled;
    // 保存到配置
    config.update('featureEnabled', isFeatureEnabled, vscode.ConfigurationTarget.Global);
  });

  // 给命令添加isChecked回调,控制勾选显示
  toggleCommand.isChecked = () => {
    // 实时获取最新状态
    return vscode.workspace.getConfiguration('myExtension').get('featureEnabled', false);
  };

  context.subscriptions.push(toggleCommand);
}

function deactivate() {}

module.exports = { activate, deactivate };

TypeScript示例

import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
  const config = vscode.workspace.getConfiguration('myExtension');
  let isFeatureEnabled = config.get<boolean>('featureEnabled', false);

  const toggleCommand = vscode.commands.registerCommand('myExtension.toggleFeature', async () => {
    isFeatureEnabled = !isFeatureEnabled;
    await config.update('featureEnabled', isFeatureEnabled, vscode.ConfigurationTarget.Global);
  });

  toggleCommand.isChecked = () => {
    return vscode.workspace.getConfiguration('myExtension').get<boolean>('featureEnabled', false);
  };

  context.subscriptions.push(toggleCommand);
}

export function deactivate() {}

3. 配置默认值(可选)

如果需要给状态设置默认值,可以在package.json的configuration字段里添加:

{
  "contributes": {
    "configuration": {
      "title": "我的扩展配置",
      "properties": {
        "myExtension.featureEnabled": {
          "type": "boolean",
          "default": false,
          "description": "是否启用我的功能"
        }
      }
    }
  }
}

完成以上步骤后,重新加载扩展,右键点击活动栏就能看到带勾选标记的菜单项,点击会切换勾选状态,且状态会持久保存。

内容的提问来源于stack exchange,提问作者Drahcir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:00:02