http://blog.haoji.me/vscode-plugin-command-and-menu.html 相关都有 然后有一些我开始没有清楚的整理一下
1 注册命令
context.subscriptions.push(vscode.commands.registerCommand('extension.sayHello', () => {
vscode.window.showInformationMessage('您执行了extension.sayHello命令!');
}));
所有的 registerCommand 的结果 都要放在 context.subscriptions.里面
注册后有了这个命令了 然后想 怎么样触发这个命令
"commands": [
{
"command": "extension.sayHello",
"title": "Hello World123123"
},
]
在命令面板找到对应的title 输入或者点击 就会触发这个命令
出发以后 怎么样 找到对应的回调函数
命令激活exrension 执行 extension.ts的 activate的这个函数 找的对应命令的回调函数执行。
回调函数可以接收一个url作为参数
context.subscriptions.push(vscode.commands.registerCommand('extension.demo.getCurrentFilePath', (uri) => {
vscode.window.showInformationMessage(`当前文件(夹)路径是:${uri ? uri.path : '空'}`);
}));
2 编辑命令
// 编辑器命令
context.subscriptions.push(vscode.commands.registerTextEditorCommand('extension.testEditorCommand', (textEditor, edit) => {
console.log('您正在执行编辑器命令!');
console.log(textEditor, edit);
}));
仅在编辑器被激活时才能使用(暂时我也不明白什么意思 用法与普通注册命令是一样的)区别是参数发生变化 有textEditor, edit这两个参数
3执行命令
我自己尝试了一下应该是extension被激活 调用activate 的时候就会执行执行命令的函数 然后执行此命令
vscode.commands.executeCommand('命令', 'params1', 'params2', ...).then(result => {
console.log('命令结果', result);
});
4获取所有命令
// 获取所有命令
vscode.commands.getCommands().then(allCommands => {
console.log('所有命令:', allCommands);
});
在何时 when
resourceLangId == javascript
:当编辑的文件是js文件时;resourceFilename == test.js
:当当前打开文件名是test.js
时;isLinux
、isMac
、isWindows
:判断当前操作系统;editorFocus
:编辑器具有焦点时;editorHasSelection
:编辑器中有文本被选中时;view == someViewId
:当当前视图ID等于someViewId
时;
5 复杂命令5
let uri = vscode.Uri.file('/some/path/to/folder'); // import * as vscode from 'vscode';
// 路径 只尝试成功了 绝对路径 D:\测试\node1 并且需要变成反斜杠 D:/测试/node1
commands.executeCommand('vscode.openFolder', uri).then(sucess => {
console.log(success);
});
在vscode中引用 或者执行其他的文件
在extension.ts中的 activate函数中
require()(context)