You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code扩展开发:调用命令运行脚本时如何让终端获取光标焦点

实现VS Code扩展中打开终端并聚焦终端面板

要实现调用命令时打开终端运行脚本并同步切换焦点到终端面板,直接利用VS Code的核心API即可完成,核心步骤如下:

  • 创建或获取终端实例:使用vscode.window.createTerminal()创建新终端,若需复用已有终端,可先判断vscode.window.activeTerminal是否存在
  • 发送脚本命令执行:通过终端实例的sendText()方法传递脚本命令,第二个参数设为true自动触发执行(模拟回车)
  • 强制聚焦终端面板:调用终端的show(true)方法,参数true会将焦点直接切换到终端,而非仅显示面板

完整代码示例

import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
    // 注册自定义命令
    const runScriptCmd = vscode.commands.registerCommand('extension.runScriptWithFocus', () => {
        // 创建命名终端(可选,方便用户区分)
        const terminal = vscode.window.createTerminal('Script Runner');
        
        // 发送要执行的脚本命令,这里以Node脚本为例
        terminal.sendText('node ./src/your-script.js', true);
        
        // 显示终端并强制转移焦点到终端面板
        terminal.show(true);
    });

    context.subscriptions.push(runScriptCmd);
}

额外说明

  • 若要复用已有终端,可替换创建终端的逻辑:
    const terminal = vscode.window.activeTerminal || vscode.window.createTerminal('Script Runner');
    
  • show(true)是实现焦点切换的关键,若传入false只会显示终端但保留当前焦点位置
  • 运行shell脚本时,直接传递脚本路径即可,比如terminal.sendText('./deploy.sh', true),注意确保脚本有执行权限

内容的提问来源于stack exchange,提问作者mariniou77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:15:30