gpt4 book ai didi

node.js - 使用自定义Node脚本作为外壳创建Visual Studio Code集成终端

转载 作者:行者123 更新时间:2023-12-03 12:23:09 29 4
gpt4 key购买 nike

我正在开发一个Visual Studio Code扩展,我希望在其中创建一个可以访问自定义 shell 程序的终端。我有一个实现此Shell的Node.js脚本(.js文件)。 现在,我正在尝试使用扩展中的Code的createTerminal方法来启动使用Node.js脚本作为其 shell 的终端。

我无法直接将shellPath设置为我的js文件,因为我无法保证用户已安装Node.js,系统无法使用Node.js运行此类文件,也无法保证安装了哪个版本的Node。我需要指出一个可以处理该文件的普遍理解的二进制文件。粗略地说,我想这样做:

let terminal = vscode.window.createTerminal({
name: "My terminal",
shellPath: 'node', // Use the Node.js executable as the target
shellArgs: [path.join(__dirname, 'my-shell-wrapper.js')] // Tell Node to run my shell
});
terminal.show();

我该怎么做?我是否可以找到带有Code的可执行文件,我可以指向该可执行文件运行Node脚本?还是我还缺少另一种机制?

最佳答案

VSCode现在(过去一年左右)可以选择为终端指定自定义行为,而不仅仅是底层的shell可执行文件。 createTerminal 有一个需要 ExtensionTerminalOptions 的重载;它具有pty属性,该属性使您可以指定自定义处理程序以读取和写入终端。从他们的Pseudoterminal documentation:

const writeEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
onDidWrite: writeEmitter.event,
open: () => {},
close: () => {},
handleInput: data => writeEmitter.fire(data === '\r' ? '\r\n' : data)
};
vscode.window.createTerminal({ name: 'Local echo', pty });

这可用于实现任意终端交互。

关于node.js - 使用自定义Node脚本作为外壳创建Visual Studio Code集成终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43510843/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com