VSCode插件开发全攻略(八)代码片段、设置、自定义欢迎页

简介: 更多文章请戳[VSCode插件开发全攻略系列目录导航](https://www.atatech.org/articles/121864)。 # 代码片段 代码片段,也叫`snippets`,相信大家都不陌生,就是输入一个很简单的单词然后一回车带出来很多代码。平时大家也可以直接在vscode中创建属于自己的`snippets`: ![_W354xH542_](http://imag

更多文章请戳VSCode插件开发全攻略系列目录导航

代码片段

代码片段,也叫snippets,相信大家都不陌生,就是输入一个很简单的单词然后一回车带出来很多代码。平时大家也可以直接在vscode中创建属于自己的snippets

_W354xH542_

创建代码片段

那么如何在扩展中创建snippets呢?

package.json文件新增如下:

"contributes": {
    "snippets": [
        {
            // 代码片段作用于那种语言
            "language": "javascript",
            // 片段文件路径
            "path": "./snippets/javascript.json"
        }
    ]
}

然后创建一个snippets/javascript.json文件,我们这里先简单点,比如创建一个for循环:

{
    "for循环": {
        "prefix": "for",
        "body": [
          "for (const ${2:item} of ${1:array}) {",
          "\t$0",
          "}"
        ],
        "description": "for循环"
    }
}

解释如下:

  • for循环snippets的名字;
  • prefix:输入什么单词触发代码片段;
  • body:一个数组,存放代码片段的内容,每一行一个字符串;
  • description:片段的描述;
  • ${1:xxx}占位符,数字表示光标聚焦的顺序,1表示默认光标落在这里,按下回车或者tab跳到2的位置,以此类推,xxx表示此位置的默认值,可省略,比如直接写$3

效果如下:

_W463xH180_

示例:ajax

为加深印象我们再来一个ajax的例子:

{
    "ajax": {
        "prefix": "ajax",
        "body": [
            "$.ajax({",
            "    url: '$1',",
            "    method: '${2:POST}',",
            "    datatype: 'json',",
            "    success: data => {",
            "        $3;",
            "    },",
            "    error: err => {",
            "        $4;",
            "    }",
            "})"
        ],
        "description": "ajax模块"
    }
}

效果(图片是直接偷来的,懒得自己截了):

_W755xH324_

使用TextMate/Sublime Snippets

利用HelloWorld章节中讲到的yo code生成器可以直接将TextMate代码段(.tmSnippets)转换成VScode的Snippets,生成器有一个选项New Code Snippets选项,可让您指向包含多个.tmSnippets文件的文件夹。此外,生成器还支持Sublime片段(.sublime-snippets)。

_W880xH768_

设置

每一个插件可以创建一个属于自己的专属设置项,这个配置项会出现在系统设置的扩展下面,效果如下:

_W1032xH706_

配置configuration

配置如下:

"contributes": {
    "configuration": {
        "type": "object",
        // 显示在配置页左侧
        "title": "Code插件demo",
        "properties": {
            // 全局唯一的配置ID
            "vscodePluginDemo.yourName": {
                "type": "string",
                "default": "guest",
                "description": "你的名字"
            },
            "vscodePluginDemo.showTip": {
                "type": "boolean",
                "default": true,
                "description": "启动时显示自定义欢迎页"
            }
        }
    }
}

比较简单,就不细讲了。

读取和修改设置

读取:

// 如果没有设置,返回undefined
const result = vscode.workspace.getConfiguration().get('vscodePluginDemo.yourName ');

修改:

// 最后一个参数,为true时表示写入全局配置,为false或不传时则只写入工作区配置
vscode.workspace.getConfiguration().update('vscodePluginDemo.yourName', '前端艺术家', true);

自定义欢迎页

下面结合设置webview2个章节的知识我们来做一个非常简单的自定义欢迎页。

最终效果如下:

_W806xH566_

要实现欢迎页,肯定要保证插件在VSCode一打开就在运行,所以activationEvents必须设置成*

然后创建一个新的打开欢迎页命令:

context.subscriptions.push(vscode.commands.registerCommand('extension.demo.showWelcome', function (uri) {
    const panel = vscode.window.createWebviewPanel(
        'testWelcome', // viewType
        "自定义欢迎页", // 视图标题
        vscode.ViewColumn.One, // 显示在编辑器的哪个部位
        {
            enableScripts: true, // 启用JS,默认禁用
        }
    );
    let global = { panel};
    panel.webview.html = getWebViewContent(context, 'src/view/custom-welcome.html');
    panel.webview.onDidReceiveMessage(message => {
        if (messageHandler[message.cmd]) {
            messageHandler[message.cmd](global, message);
        } else {
            util.showError(`未找到名为 ${message.cmd} 回调方法!`);
        }
    }, undefined, context.subscriptions);
}));

然后在全局的active方法里面加入以下代码:

const key = 'vscodePluginDemo.showTip';
// 如果设置里面开启了欢迎页显示,启动欢迎页
if (vscode.workspace.getConfiguration().get(key)) {
    vscode.commands.executeCommand('extension.demo.showWelcome');
}

在欢迎页我们加一个选项控制:

<div class="checkbox">
    <label>
        <input type="checkbox" v-model="show"> 启动时显示自定义欢迎页
    </label>
</div>

然后监听show:

watch: {
    show(nv, ov) {
        callVscode({cmd: 'setConfig', key: 'vscodePluginDemo.showTip', value: nv}, null);
    }
}

代码很简单,也没啥太多可以讲的。修改复选框的值后可以去设置里面看一下值是否跟着变了。

参考资料

目录
相关文章
|
1月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
470 4
2022最新最详细必成功的在Vscode中设置背景图、同时解决不受支持的问题
这篇文章提供了在VScode中设置背景图的详细步骤,包括下载background插件、编辑setting.json文件、配置背景样式,并解决了设置后出现的不支持提示的问题。
2022最新最详细必成功的在Vscode中设置背景图、同时解决不受支持的问题
Vscode设置标签页多行显示
这篇文章提供了在VSCode中设置标签页多行显示的方法,以提高编辑效率。
Vscode设置标签页多行显示
|
4月前
|
编译器 C++
VS Code设置C++编译器路径
VS Code设置C++编译器路径
60 0
|
6月前
|
前端开发
VSCode中自带插件Emmet的用法
Emmet 是一个强大的工具,集成在 Visual Studio Code (VSCode) 中,可以大大提高编写 HTML 和 CSS 的效率。以下是如何使用 Emmet 插件的一些基本方法
98 4
|
6月前
|
传感器 前端开发 JavaScript
前端开发者必备的VS Code插件推荐
前端开发者必备的VS Code插件推荐
|
5月前
|
开发工具 git
vscode设置 git提交代码忽略node_modules,dist,vscode如何设置不提交node_modules,dist
vscode设置 git提交代码忽略node_modules,dist,vscode如何设置不提交node_modules,dist
582 0
|
5月前
|
前端开发 JavaScript 开发工具
vscode教程(含使用技巧、保存时自动格式化文件等设置)
vscode教程(含使用技巧、保存时自动格式化文件等设置)
484 0
|
6月前
|
Linux 网络安全 数据安全/隐私保护
VsCode SSH远程设置不用重复输入密码
VsCode SSH远程设置不用重复输入密码
|
7月前
|
API 开发工具 C++
【专栏:工具与技巧篇】使用代码编辑器(VS Code/Sublime Text)提升开发效率
【4月更文挑战第30天】在VS Code与Sublime Text两大流行代码编辑器中,开发者可借助其高效特性提升编程效率。VS Code拥有丰富的插件生态、内置Git集成、强大的调试工具、智能提示和多文件导航功能。Sublime Text则以其轻量级、快速响应、多光标编辑及自定义构建系统见长。学习编辑器的键盘快捷键、自定义配置、使用内置终端以及键绑定和宏,将助开发者进一步提高开发效率。选择适合自己的编辑器并不断适应新技术是提升开发工作流的关键。
318 1