在VS Code开发工具中也可以通过自定义指令实现操作终端的操作,然而终端该怎么创建呢?
一、createTerminal创建终端
当发送具体命令时,需要一个执行命令的函数,传入什么就执行什么命令。函数主要实现创建终端以及执行传过来的具体指令,注意重复创建终端的情况,不需要要进行销毁。创建终端需要通过createTerminal方法,接收一个options参数对象。
const terminal = vscode.window.createTerminal(options);
options 参数包括以下属性:
-
name:一个字符串,用于指定终端的名称。这个名称将显示在 VS Code 终端面板中已打开终端的列表中。
-
shellPath:一个字符串,用于指定终端所使用的 shell 可执行文件的路径。例如,你可以提供 Bash 或 PowerShell 可执行文件的路径。
-
shellArgs:一个字符串数组,用于指定传递给 shell 的命令行参数。
-
cwd:一个字符串,用于指定终端的当前工作目录。终端将在这个目录中启动。
-
env:一个对象,定义要为终端设置的环境变量。
这里给一个options示例:
const terminalOptions = {
name: "coldPlayer的终端",
shellPath: "/bin/bash",
shellArgs: [],
cwd: "/工作目录的路径",
env: {
CUSTOM_ENV_VAR: "我的值",
},
};
二、终端方法
上面创建的终端terminal有哪些交互的方法与属性呢?
1、terminal.hide()
隐藏终端。如果终端已经被创建且当前可见,调用这个方法将会隐藏终端。
terminal.hide();
2、terminal.show()
显示终端。执行某个命令时需要显示终端,调用这个方法将会显示终端。
terminal.show();
3、terminal.dispose()
销毁终端。如果不再需要一个终端,可以调用这个方法来释放资源。
terminal.dispose();
4、terminal.sendText(command, addNewLine)
向终端发送命令,允许传递一个可选的 addNewLine 参数(布尔类型),控制是否在发送命令后添加新行。 addNewLine 默认为true ,执行命令后自动换行。
// 发送命令并添加新行
terminal.sendText("npm start", true);
5、 terminal.processId
只读属性,用于获取终端的进程标识符 (PID),PID可以监视和管理终端的进程。注意:获取pid是一个异步的过程。
const pid = terminal.processId;
三、案例
创建终端,并执行git add .的命令
const terminalOptions = {
name: "coldPlayer的终端",
shellPath: "/bin/bash",
shellArgs: [],
cwd: "/工作目录的路径",
env: {
CUSTOM_ENV_VAR: "我的值",
},
};
async function executeGitCommand(command: string, options: vscode.TerminalOptions) {
const terminal = vscode.window.createTerminal(terminalOptions);
//因为pid的获取时异步的过程,所以这里用await后,能打印出pid的值
const pid = await terminal.processId;
console.log(pid, 'pid')
terminal.sendText(command);
terminal.show();
console.log(terminal, 'terminal')
// terminal.dispose();
// console.log(terminal,'terminal')
}
export async function activate(context: vscode.ExtensionContext) {
vscode.commands.registerCommand('wxRead.gitAdd', () => {
executeGitCommand('git add .', terminalOptions );
})
}
控制台创建自定义终端,并执行git add .命令
打印的结果