2025最强AI编辑器扩展开发指南:从0到1打造专属插件
你是否还在为找不到Cursor的替代方案而烦恼?是否想为开源AI代码编辑器Void开发专属扩展,却不知从何下手?本文将带你从Hello World起步,逐步掌握Void编辑器扩展开发的核心技能,最终打造出功能完善的插件。读完本文,你将了解扩展的基本结构、开发环境搭建、核心API使用以及打包发布的全流程。
扩展开发环境准备
Void编辑器作为开源AI代码编辑器,其扩展开发需要特定的环境配置。首先,确保你的开发环境满足以下要求:
- Node.js 20.18.2(项目根目录下的.nvmrc文件指定了该版本)
- npm包管理工具
- Git版本控制工具
克隆项目仓库的命令如下:
git clone https://gitcode.com/GitHub_Trending/void2/void
进入项目目录后,安装依赖:
cd void
npm install
初始化开发者模式的步骤如下:
- Windows:按下Ctrl+Shift+B
- Mac:按下Cmd+Shift+B
- Linux:按下Ctrl+Shift+B
启动开发者模式窗口:
- Windows:
./scripts/code.bat - Mac:
./scripts/code.sh - Linux:
./scripts/code.sh
开发模式启动后,你可以通过Ctrl+R(或Cmd+R)重新加载窗口来应用代码更改。详细的环境配置说明可参考HOW_TO_CONTRIBUTE.md。
扩展基本结构解析
Void编辑器的扩展采用了与VSCode类似的结构。一个典型的扩展包含以下文件和目录:
- package.json:扩展的清单文件,包含扩展的元数据、依赖和贡献点
- extension.ts:扩展的入口文件,包含激活和停用扩展的逻辑
- src/:源代码目录
- media/:媒体资源目录(如图片、样式表等)
以markdown-basics扩展为例,其package.json文件定义了语言支持、语法高亮和代码片段等贡献点。以下是该文件的部分内容:
{
"name": "markdown",
"displayName": "%displayName%",
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
"engines": {
"vscode": "^1.20.0"
},
"categories": ["Programming Languages"],
"contributes": {
"languages": [...],
"grammars": [...],
"snippets": [...]
}
}
在contributes部分,你可以定义扩展对编辑器的各种贡献,如命令、菜单、快捷键、语言支持等。详细的扩展结构说明可参考VOID_CODEBASE_GUIDE.md。
Hello World扩展实现
下面我们将创建一个简单的Hello World扩展,演示扩展开发的基本流程。
创建扩展项目
首先,在extensions目录下创建一个新的扩展目录,例如hello-world:
mkdir extensions/hello-world
cd extensions/hello-world
初始化package.json文件:
npm init -y
编辑package.json文件,添加必要的字段:
{
"name": "hello-world",
"displayName": "Hello World",
"version": "0.0.1",
"engines": {
"vscode": "^1.20.0"
},
"main": "./extension.js",
"contributes": {
"commands": [{
"command": "hello-world.helloWorld",
"title": "Hello World"
}]
}
}
实现扩展逻辑
创建extension.js文件,实现激活和命令处理逻辑:
const vscode = require('vscode');
function activate(context) {
let disposable = vscode.commands.registerCommand('hello-world.helloWorld', function () {
vscode.window.showInformationMessage('Hello World from Void Extension!');
});
context.subscriptions.push(disposable);
}
function deactivate() {}
module.exports = {
activate,
deactivate
};
测试扩展
在开发者模式窗口中,按下Ctrl+Shift+P(或Cmd+Shift+P)打开命令面板,输入"Hello World"命令,你将看到一个信息提示框显示"Hello World from Void Extension!"。
核心API使用指南
Void编辑器提供了丰富的API,用于扩展编辑器的功能。以下是一些常用API的使用示例:
文本编辑器操作
获取当前活动的文本编辑器:
let editor = vscode.window.activeTextEditor;
if (!editor) {
return; // 没有打开的编辑器
}
修改文本内容:
let document = editor.document;
let selection = editor.selection;
let text = document.getText(selection);
let newText = text.toUpperCase();
editor.edit(editBuilder => {
editBuilder.replace(selection, newText);
});
文件系统操作
读取文件内容:
let uri = vscode.Uri.file('/path/to/file.txt');
vscode.workspace.fs.readFile(uri).then(content => {
let text = new TextDecoder().decode(content);
console.log(text);
});
写入文件内容:
let uri = vscode.Uri.file('/path/to/file.txt');
let content = new TextEncoder().encode('Hello World');
vscode.workspace.fs.writeFile(uri, content);
配置管理
获取配置:
let config = vscode.workspace.getConfiguration('hello-world');
let enabled = config.get('enabled');
更新配置:
vscode.workspace.getConfiguration().update('hello-world.enabled', true, vscode.ConfigurationTarget.Global);
高级功能开发
代码补全功能
实现一个简单的代码补全提供者:
class HelloCompletionItemProvider {
provideCompletionItems(document, position, token, context) {
let completionItem = new vscode.CompletionItem('hello', vscode.CompletionItemKind.Text);
completionItem.insertText = 'Hello World';
completionItem.documentation = new vscode.MarkdownString('Inserts "Hello World"');
return [completionItem];
}
}
context.subscriptions.push(
vscode.languages.registerCompletionItemProvider(
'javascript',
new HelloCompletionItemProvider(),
''
)
);
侧边栏视图
创建一个自定义侧边栏视图:
- 在package.json中注册视图:
"contributes": {
"viewsContainers": {
"activitybar": [{
"id": "hello-world-view",
"title": "Hello World",
"icon": "media/icon.svg"
}]
},
"views": {
"hello-world-view": [{
"id": "hello-world-sidebar",
"name": "Hello World"
}]
}
}
- 实现视图提供器:
class HelloWorldSidebarProvider {
constructor(context) {
this._view = undefined;
this._context = context;
}
resolveWebviewView(webviewView) {
this._view = webviewView;
webviewView.webview.options = {
enableScripts: true,
localResourceRoots: [this._context.extensionUri]
};
webviewView.webview.html = `
<!DOCTYPE html>
<html>
<body>
<h1>Hello World Sidebar</h1>
</body>
</html>
`;
}
}
context.subscriptions.push(
vscode.window.registerWebviewViewProvider(
'hello-world-sidebar',
new HelloWorldSidebarProvider(context)
)
);
扩展打包与发布
打包扩展
安装VSCode扩展打包工具:
npm install -g @vscode/vsce
在扩展目录下运行打包命令:
vsce package
这将生成一个.vsix文件,可用于手动安装扩展。
发布到市场
要将扩展发布到VSCode市场,需要先创建一个发布者账户,然后使用vsce命令发布:
vsce publish -p <personal-access-token>
详细的打包和发布说明可参考VSCode官方文档。
总结与进阶
通过本文的学习,你已经掌握了Void编辑器扩展开发的基础知识,包括环境搭建、基本结构、核心API使用以及打包发布流程。Void编辑器的扩展系统基于VSCode的扩展架构,因此大部分VSCode扩展开发资源也适用于Void。
进阶学习建议:
- 深入研究VOID_CODEBASE_GUIDE.md,了解Void项目的内部架构
- 探索extensions目录下的现有扩展,学习实际项目中的实现方式
- 参与社区讨论,获取更多开发技巧和最佳实践
希望本文能帮助你顺利入门Void扩展开发,打造出强大而实用的编辑器插件。如果你有任何问题或建议,欢迎在项目仓库提交issue或参与讨论。
点赞、收藏本文,关注作者获取更多Void编辑器使用和开发技巧!下期预告:《Void编辑器AI功能扩展开发实战》。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00