开启成长之旅!这是我参加「日新计划 12 月更文应战」的第24天,点击检查活动详情

package.json

对插件的详细描述,咱们先关注以下的字段:

{
  "name": "test-plugin",
  "main": "./out/extension.js",
  "activationEvents"["*"],
  "contributes":{
    "commands":[
      {
        "command": "test-plugin.helloWorld",
        "title": "Hello World"
      }
    ]
  }
  // ...
}
  • name :插件的姓名
  • main:进口地址
  • commands:插件一切能够运用的指令
    • command:当触发指令时,发送的消息姓名,格局为{name}.{cmd}
    • title:指令的标题,咱们输入指令的时分就是以这个字段为准。
      vscode插件教程:command
  • activationEvents:激活可用的事情列表,格局为:{event}:{value}

activationEvents

设置激活插件的事情,当插件激活时会调用进口的activate函数,插件默许是没有激活的。

vscode提供了非常多的事情类型,比方onLanguageonCommandonView等。

command举例,需求按照这样的格局书写

"activationEvents": [
    "onCommand:test-plugin.helloWorld"
],

其中commandcontributes.commands中的某一项值。

当运用指令形式,输入Hello World,触发command的时分,插件就会激活。

vscode插件教程:command

留意事项

假如未声明在activationEvents中的指令被触发,就会呈现一下警告:

vscode插件教程:command

这个警告让初为新手的我困惑了好长时间,算是一个留意点。

假如不想过滤任何事情,能够暴力的设置为*即可

{
  "activationEvents": ["*"]
}

command的逻辑完成

package.json中咱们只是界说了commandcommand触发的逻辑在src/extension.ts中:

export function active (context) {
  context.subscriptions.push(
    vscode.commands.registerCommand(
      'test-plugin.helloWorld', // 留意这个参数,必须和packages.json中的command共同
      () => {
        // command的详细逻辑
        vscode.window.showInformationMessage('Hello World!');
      }
    )
  );
}

注释阐明的也比较明晰啦,大约这姿态,咱们就能够看到指令履行后,弹出一个Hello World的提示语。

总结

经过上边的学习,咱们会发现以下2处的需求完全共同,并且都是{plugin-name}.{value}的格局。

vscode插件教程:command

那么咱们不恪守这个格局,只需保证共同是否能够正常工作呢?答案是:完全能够。

但为什么官方的例子里面都是运用{plugin-name}.{value}的格局呢?

以我个人经历,为了避免不同插件重名呈现未知的问题,插件姓名在整个生态是仅有的,以plugin-name开头,能够保证仅有性。

so,那我可不能够A插件调用B插件的指令呢?

假如你有这个想法,阐明你已经对插件的了解又高人一步了!

vscode插件教程:command