vscode插件开发之终端那些事儿

744 阅读1分钟

在开发vscode插件的时候,好几个设计都需要集成终端。 查资料后发现vsocd为开发者提供了丰富的终端API。

结合我自己的需求来展开终端的那些事儿吧:

  1. 从treeview中点击触发打开一个终端 无关的代码省略:
vscode.window.createTerminal({name: "yu-term"});

vscode-term-1.jpg 看图有点别扭,怎么会在下面?不是我想要的效果。

  1. 调整下打开位置
vscode.window.createTerminal({name: "yu-term",location:vscode.TerminalLocation.Editor});

打开的位置在vscode.TerminalLocation.Editor

vscode-term-2.jpg 现在的效果ok了。 但是光标不在终端,需要鼠标点击下,继续调整。

  1. 调整光标
var _terminal = vscode.window.createTerminal({name: "yu-term",location:vscode.TerminalLocation.Editor});
_terminal.show(false);

通过show(false);调整光标到终端。 是否可以初始执行点命令?不用手敲,偷个懒?

  1. 终端默认执行指定命令
_terminal.sendText(`yutmux`);

通过sendText函数可以在终端中运行命令。 这里我运行了我自己封装tmux的一个脚本命令yutmux。

vscode-plugin-3.jpg

  1. 获取终端
vscode.window.activeTerminal->当前活跃 的终端
vscode.window.terminals->所有打开的终端

做判断,如果不想不断打开新的终端的话。

  1. 监听终端的事件
vscode.window.onDidChangeActiveTerminali->当前活跃的终端被改变
vscode.window.onDidCloseTerminal->有终端被关闭
vscode.window.onDidOpenTerminal->有新的终端被打开

有特殊需求可以通过这些监听事件进行处理。

  1. enjoy!