您现在的位置是:亿华云 > IT科技
少年,我把珍藏的这个 VSCode 插件 API 传给你了
亿华云2025-10-03 18:19:43【IT科技】8人已围观
简介本文转载自微信公众号「神光的编程秘籍」,作者神说要有光zxg 。转载本文请联系神光的编程秘籍公众号。VSCode 是我们每天都用的编辑器,我们会使用很多 VSCode 插件,其中有些功能比较强大但实现
本文转载自微信公众号「神光的少年编程秘籍」,作者神说要有光zxg 。把珍转载本文请联系神光的藏的e插传编程秘籍公众号。
VSCode 是少年我们每天都用的编辑器,我们会使用很多 VSCode 插件,把珍其中有些功能比较强大但实现起来其实很简单,藏的e插传今天就给大家介绍一个这种 API。少年
概念串讲
先来了解几个概念:
每一个这种编辑窗口叫做一个 Editor,把珍通过 vscode.window.visibleTextEditors 就可以拿到所有可见的藏的e插传 editor 实例。
editor 里有什么呢?少年
编辑器里编辑的当然是文档了,通过 editor.document 就可以拿到文档实例。把珍
document 又可以通过 document.getText() 拿到文档内容。藏的e插传
接下来就是少年那个简单又强大的 API: editor.setDecorations(decoration, range)
它的作用就是在 editor 的某个位置到某个位置,也就是把珍某段范围添加一些 CSS,这些 CSS 叫做装饰。藏的e插传
创建 decorator 的服务器托管 api 是 window.createTextEditorDecorationType:
vscode.window.createTextEditorDecorationType({ textDecoration: line-through, })参数就是 css,可以加各种样式。还可以加伪元素(before 或 after):
vscode.window.createTextEditorDecorationType({ before: { contentText:, textDecoration: `none;` }, })那这些装饰放在哪里呢?就是第二个参数 range 指定的,range 由文档中的两个位置来确定。
const startPos = activeEditor.document.positionAt(ndex1); const endPos = activeEditor.document.positionAt(index2); const range = new vscode.Range(startPos, endPos);这样,就可以给编辑器加上了装饰。
我们来串联一下上面讲的东西:
从 editor 中拿到 document,然后 document.getText() 拿到文本内容,找到其中的两个位置 position1 和 position2,构造成一个 range, 然后通过 editor.setDecorations 给这段 range 加装饰,装饰就是各种 css 或者伪元素。
你可能会说,就这?这个 api 有啥强大的。
那我们来看下这个 api 能做啥。
decorator 的应用
css 颜色预览
大家用没用过这个 css 的颜色高亮插件 vscode-color-highlight,这个的实现就是通过正则匹配出 color 所在的 range,然后加一个 before 伪元素的装饰,站群服务器添加背景色。
上图就是我之前做过一个颜色预览功能,还支持了渐变色。
gitlens 的行内 commit 信息
gitlens 可以说是最流行的 VSCode 插件了,它是怎么在 editor 中显示 commit 信息的呢?
没错,也是通过 decorator。
编辑特效
还有,在编辑器中放烟花的插件 vscode-power-mode,这么炫酷的效果也是基于 decorator。原理是 document 内容改变的时候添加 before 伪元素,放一个 gif 图,过段时间消失。
这些功能就是基于我们前面了解的那个 editor.setDecorations 的 api,是不是简单又强大。
总结
VSCode 里面的每个编辑窗口是服务器租用一个 editor 实例,可以通过 vscode.window.visibleTextEditors 拿到所有的可见 editor。
editor 中有 document,然后可以通过 document.getText 拿到文本。
之后,通过对文本通过正则匹配,确定加装饰的范围,然后创建装饰对象,也就是一段 CSS。接下来就可以使用这个简单又强大的 api: editor.setDecorations给编辑器加装饰了。
其实我们平时用的 VSCode 功能中有很多 decorator 实现的,比如 css 颜色预览、行内的 git blame 信息,还有放烟花等编辑特效等等。是不是简单又强大。
少年,这个我珍藏的 VSCode 插件 API 就传授给你了,能限制你的应该就只有想象力了吧。
很赞哦!(78)
上一篇: 不断发展的基础设施:数据中心的现代化
下一篇: 一道数学题,让芯片巨头亏了5亿美金!