vscode插件开发之终端
在开发vscode插件的时候,好几个设计都需要集成终端。 查资料后发现vsocd为开发者提供了丰富的终端API。
结合我自己的需求来展开终端的那些事儿吧:
- 从treeview中点击触发打开一个终端 无关的代码省略:
js
vscode.window.createTerminal({name: "yu-term"});看图有点别扭,怎么会在下面?不是我想要的效果。
- 调整下打开位置
js
vscode.window.createTerminal({name: "yu-term",location:vscode.TerminalLocation.Editor});打开的位置在vscode.TerminalLocation.Editor 现在的效果ok了。 但是光标不在终端,需要鼠标点击下,继续调整。
- 调整光标
js
var _terminal = vscode.window.createTerminal({name: "yu-term",location:vscode.TerminalLocation.Editor});
_terminal.show(false);通过show(false);调整光标到终端。 是否可以初始执行点命令?不用手敲,偷个懒?
- 终端默认执行指定命令
js
_terminal.sendText(`yutmux`);通过sendText函数可以在终端中运行命令。 这里我运行了我自己封装tmux的一个脚本命令。
- 获取终端
vscode.window.activeTerminal->当前活跃 的终端
vscode.window.terminals->所有打开的终端做判断,如果不想不断打开新的终端的话。
- 监听终端的事件
js
vscode.window.onDidChangeActiveTerminali->当前活跃的终端被改变
vscode.window.onDidCloseTerminal->有终端被关闭
vscode.window.onDidOpenTerminal->有新的终端被打开有特殊需求可以通过这些监听事件进行处理。