Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

附录 C:命令与菜单

本附录列出 VSDB 所有命令、菜单和快捷键。

C.1 全局命令

命令 ID标题功能
vsdb.addConnectionVSDB: Add Connection打开连接表单添加新连接
vsdb.scanProjectVSDB: Scan Project扫描项目配置发现连接
vsdb.removeConnectionVSDB: Remove Connection选择并删除连接
vsdb.connectVSDB: Connect连接选中的数据库
vsdb.disconnectVSDB: Disconnect断开选中连接
vsdb.newQueryVSDB: New Query打开 SQL 编辑器
vsdb.searchVSDB: Search打开搜索对话框
vsdb.exportDataVSDB: Export Data导出当前结果
vsdb.importDataVSDB: Import Data导入数据

C.2 树节点命令

命令 ID标题适用节点功能
vsdb.tree.connectConnectconnection连接数据库
vsdb.tree.disconnectDisconnectconnection-connected断开连接
vsdb.tree.newQueryNew Queryconnection-connected, database, table打开 SQL 编辑器
vsdb.tree.copyConnectionStringCopy Connection Stringconnection, database复制连接字符串
vsdb.tree.editConnectionEdit Connectionconnection编辑连接配置
vsdb.tree.deleteConnectionDelete Connectionconnection删除连接
vsdb.tree.refreshRefreshconnection, database刷新节点
vsdb.viewTableStructureView Table Structuretable查看表结构

C.3 视图工具栏

命令图标位置功能
vsdb.addConnection$(add)navigation@1添加连接
vsdb.tree.refresh$(refresh)navigation@2刷新树
vsdb.scanProject$(search)navigation@3扫描项目

C.4 右键菜单

view/title(视图标题栏)

{
  "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(节点右键)

{
  "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"
    }
  ]
}

C.5 viewItem 类型

viewItem 值节点类型说明
connectionConnectionNode (disconnected)未连接的连接节点
connection-connectedConnectionNode (connected)已连接的连接节点
connection-connectingConnectionNode (connecting)正在连接
connection-errorConnectionNode (error)连接错误
databaseDatabaseNode数据库节点
tableTableNode表节点
columnColumnNode列节点
historyHistoryNode历史记录节点
history-pinnedHistoryNode (pinned)固定的历史记录
bookmarkBookmarkNode书签节点

C.6 SQL Editor 快捷键

快捷键功能
Ctrl+Enter / Cmd+Enter执行当前 SQL
Ctrl+S / Cmd+S保存查询

C.7 树节点图标

状态图标颜色
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)-

C.8 命令注册示例

// 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,
  // ...
);