本附录列出 VSDB 所有命令、菜单和快捷键。
| 命令 ID | 标题 | 功能 |
vsdb.addConnection | VSDB: Add Connection | 打开连接表单添加新连接 |
vsdb.scanProject | VSDB: Scan Project | 扫描项目配置发现连接 |
vsdb.removeConnection | VSDB: Remove Connection | 选择并删除连接 |
vsdb.connect | VSDB: Connect | 连接选中的数据库 |
vsdb.disconnect | VSDB: Disconnect | 断开选中连接 |
vsdb.newQuery | VSDB: New Query | 打开 SQL 编辑器 |
vsdb.search | VSDB: Search | 打开搜索对话框 |
vsdb.exportData | VSDB: Export Data | 导出当前结果 |
vsdb.importData | VSDB: Import Data | 导入数据 |
| 命令 ID | 标题 | 适用节点 | 功能 |
vsdb.tree.connect | Connect | connection | 连接数据库 |
vsdb.tree.disconnect | Disconnect | connection-connected | 断开连接 |
vsdb.tree.newQuery | New Query | connection-connected, database, table | 打开 SQL 编辑器 |
vsdb.tree.copyConnectionString | Copy Connection String | connection, database | 复制连接字符串 |
vsdb.tree.editConnection | Edit Connection | connection | 编辑连接配置 |
vsdb.tree.deleteConnection | Delete Connection | connection | 删除连接 |
vsdb.tree.refresh | Refresh | connection, database | 刷新节点 |
vsdb.viewTableStructure | View Table Structure | table | 查看表结构 |
| 命令 | 图标 | 位置 | 功能 |
vsdb.addConnection | $(add) | navigation@1 | 添加连接 |
vsdb.tree.refresh | $(refresh) | navigation@2 | 刷新树 |
vsdb.scanProject | $(search) | navigation@3 | 扫描项目 |
{
"view/title": [
{
"command": "vsdb.addConnection",
"when": "view == vsdb.connections",
"group": "navigation@1"
},
{
"command": "vsdb.tree.refresh",
"when": "view == vsdb.connections",
"group": "navigation@2"
},
{
"command": "vsdb.scanProject",
"when": "view == vsdb.connections",
"group": "navigation@3"
}
]
}
{
"view/item/context": [
// 连接节点内联按钮
{
"command": "vsdb.tree.connect",
"when": "view == vsdb.connections && viewItem == connection",
"group": "inline@1"
},
{
"command": "vsdb.tree.disconnect",
"when": "view == vsdb.connections && viewItem == connection-connected",
"group": "inline@1"
},
// 查询相关
{
"command": "vsdb.tree.newQuery",
"when": "view == vsdb.connections && viewItem == connection-connected",
"group": "1_query@1"
},
// 表结构
{
"command": "vsdb.viewTableStructure",
"when": "view == vsdb.connections && viewItem == table",
"group": "1_actions@1"
},
// 管理操作
{
"command": "vsdb.tree.copyConnectionString",
"when": "view == vsdb.connections && viewItem =~ /^connection/",
"group": "2_manage@1"
},
{
"command": "vsdb.tree.editConnection",
"when": "view == vsdb.connections && viewItem =~ /^connection/",
"group": "3_edit@1"
},
{
"command": "vsdb.tree.deleteConnection",
"when": "view == vsdb.connections && viewItem =~ /^connection/",
"group": "3_edit@2"
},
// 刷新
{
"command": "vsdb.tree.refresh",
"when": "view == vsdb.connections && viewItem =~ /^(connection|database)/",
"group": "4_refresh@1"
}
]
}
| viewItem 值 | 节点类型 | 说明 |
connection | ConnectionNode (disconnected) | 未连接的连接节点 |
connection-connected | ConnectionNode (connected) | 已连接的连接节点 |
connection-connecting | ConnectionNode (connecting) | 正在连接 |
connection-error | ConnectionNode (error) | 连接错误 |
database | DatabaseNode | 数据库节点 |
table | TableNode | 表节点 |
column | ColumnNode | 列节点 |
history | HistoryNode | 历史记录节点 |
history-pinned | HistoryNode (pinned) | 固定的历史记录 |
bookmark | BookmarkNode | 书签节点 |
| 快捷键 | 功能 |
Ctrl+Enter / Cmd+Enter | 执行当前 SQL |
Ctrl+S / Cmd+S | 保存查询 |
| 状态 | 图标 | 颜色 |
| connected | $(database) | charts.green |
| connecting | $(loading~spin) | - |
| disconnected | $(database) | - |
| error | $(error) | charts.red |
| database | $(folder) | - |
| table | $(table) | - |
| column | $(symbol-field) | - |
| primary key | $(key) | - |
| index | $(list-unordered) | - |
// extension.ts
const addConnectionCmd = vscode.commands.registerCommand(
'vsdb.addConnection',
() => {
ConnectionFormPanel.show(connectionManager, ipcManager, undefined, () => {
treeProvider?.refresh();
});
}
);
const scanProjectCmd = vscode.commands.registerCommand(
'vsdb.scanProject',
async () => {
const workspaceRoot = vscode.workspace.workspaceFolders?.[0]?.uri?.fsPath;
if (!workspaceRoot) {
vscode.window.showWarningMessage('No workspace folder open.');
return;
}
vscode.window.withProgress({
location: vscode.ProgressLocation.Notification,
title: 'VSDB: Scanning project...',
}, async () => {
const result = await scannerEngine!.scan(workspaceRoot, existingConnections);
// 处理结果...
});
}
);
context.subscriptions.push(
addConnectionCmd,
scanProjectCmd,
// ...
);