VSCODE插件开发:用户输入输出
阅读这篇文章之前,假设你已经具有开发helloworld的插件的能力。
vscode.window 简介
vscode.window
负责当前激活窗口的输入输出,比如展示信息,和用户输入等功能都是用vscode.window实现
代码输出提示信息
简单的输出提示信息
使用vscode.windows.showInformationMessage('Hello World!')可以进行简单输出信息展示。
let disposable = vscode.commands.registerCommand('extension.sayHello', () => {
// Display a message box to the user
vscode.window.showInformationMessage('Hello World!');
});
效果如下:

示例代码在官方文档中也可以找到,Example-hello world:https://code.visualstudio.com/docs/extensions/example-hello-world
带有选择项的输出提示信息
如果提示信息想带回用户的选择怎么办,参考以下代码
let disposable = vscode.commands.registerCommand('extension.sayHello', function () {
vscode.window.showInformationMessage("请问你现在的心情如何",'你说什么','我不知道','再见!')
.then(function(select){
console.log(select);
});
});
在提示信息后面紧跟上给用户的选择项,然后用then接收即可
效果如下:

不同类型的输出
官方提供了三种不同类型的信息输出方法
分别是:
- showInformationMessage()
- showErrorMessage()
- showWarningMessage()
三个的用法基本类似,提示框的样式会有区别
状态栏设置
使用vscode.windows.setStatusBarMessage设置状态栏提示信息
let disposable = vscode.commands.registerCommand('extension.sayHello', function () {
vscode.window.setStatusBarMessage('今天也要快乐鸭!~',3000);
});
额,写这些有什么意义?官方文档很清晰了好吗,不想写了。
官方文档地址:https://code.visualstudio.com/docs/extensionAPI/vscode-api#window.setStatusBarMessage
用户输入
字符串输入
使用vscode.window.showInputBox()打开一个输入框让用户输入信息
let disposable = vscode.commands.registerCommand('extension.sayHello', function () {
vscode.window.showInputBox(
{ // 这个对象中所有参数都是可选参数
password:false, // 输入内容是否是密码
ignoreFocusOut:true, // 默认false,设置为true时鼠标点击别的地方输入框不会消失
placeHolder:'你到底想输入什么?', // 在输入框内的提示信息
prompt:'赶紧输入,不输入就赶紧滚', // 在输入框下方的提示信息
validateInput:function(text){return text;} // 对输入内容进行验证并返回
}).then(function(msg){
console.log("用户输入:"+msg);
});
});
界面效果如下:
选择本地文件
使用vscode.window.showOpenDialog()用来选择本地文件
let disposable = vscode.commands.registerCommand('extension.sayHello', function () {
vscode.window.showOpenDialog(
{ // 可选对象
canSelectFiles:true, // 是否可选文件
canSelectFolders:false, // 是否可选文件夹
canSelectMany:true, // 是否可以选择多个
defaultUri:vscode.Uri.file("/D:/"), // 默认打开本地路径
openLabel:'按钮文字说明'
}).then(function(msg){
console.log(msg.path);
})
});
官方文档:https://code.visualstudio.com/docs/extensionAPI/vscode-api#window.showOpenDialog
打开选择框
let disposable = vscode.commands.registerCommand('extension.sayHello', function () {
vscode.window.showQuickPick(
[
"哈哈哈,你是傻逼吗",
"哈哈哈,你是二逼么",
"你他妈有病吧",
"乖,你是妈的智障"
],
{
canPickMany:true,
ignoreFocusOut:true,
matchOnDescription:true,
matchOnDetail:true,
placeHolder:'温馨提示,请选择你是哪种类型?'
})
.then(function(msg){
console.log(msg);
})
});
官方文档:https://code.visualstudio.com/docs/extensionAPI/vscode-api#window.showQuickPick
总结
官方文档很详细,看官方文档吧。这里只是简单记录下
VSCODE插件开发:用户输入输出的更多相关文章
- VSCode插件开发全攻略(七)WebView
更多文章请戳VSCode插件开发全攻略系列目录导航. 什么是Webview 大家都知道,整个VSCode编辑器就是一张大的网页,其实,我们还可以在Visual Studio Code中创建完全自定义的 ...
- VSCode插件开发全攻略(三)package.json详解
更多文章请戳VSCode插件开发全攻略系列目录导航. package.json 在详细介绍vscode插件开发细节之前,这里我们先详细介绍一下vscode插件的package.json写法,但是建议先 ...
- VSCode插件开发全攻略(二)HelloWord
更多文章请戳VSCode插件开发全攻略系列目录导航. 写着前面 学习一门新的语言或者生态首先肯定是从HelloWord开始. 您可以直接克隆我放在GitHub上vscode-plugin-demo 的 ...
- VSCode插件开发全攻略(九)常用API总结
更多文章请戳VSCode插件开发全攻略系列目录导航. 本文提炼一些常见的API使用场景供参考,本文内容有待完善. 编辑器相关 修改当前激活编辑器内容 替换当前编辑器全部内容: vscode.windo ...
- VSCode插件开发全攻略(十)打包、发布、升级
更多文章请戳VSCode插件开发全攻略系列目录导航. 发布方式 插件开发完了,如何发布出去分享给他人呢?主要有3种方法: 方法一:直接把文件夹发给别人,让别人找到vscode的插件存放目录并放进去,然 ...
- VSCode插件开发全攻略(八)代码片段、设置、自定义欢迎页
更多文章请戳VSCode插件开发全攻略系列目录导航. 代码片段 代码片段,也叫snippets,相信大家都不陌生,就是输入一个很简单的单词然后一回车带出来很多代码.平时大家也可以直接在vscode中创 ...
- VSCode插件开发全攻略(六)开发调试技巧
更多文章请戳VSCode插件开发全攻略系列目录导航. 前言 在介绍完一些比较简单的内容点之后,我觉得有必要先和大家介绍一些开发中遇到的一些细节问题以及技巧,特别是后面一章节将要介绍WebView的知识 ...
- VSCode插件开发全攻略(五)跳转到定义、自动补全、悬停提示
更多文章请戳VSCode插件开发全攻略系列目录导航. 跳转到定义 跳转到定义其实很简单,通过vscode.languages.registerDefinitionProvider注册一个provide ...
- VSCode插件开发全攻略(四)命令、菜单、快捷键
更多文章请戳VSCode插件开发全攻略系列目录导航. 命令 我们在前面HelloWord章节中已经提到了命令写法,这里再重温一下. context.subscriptions.push(vscode. ...
- VSCode插件开发全攻略(一)概览
文章索引 VSCode插件开发全攻略(一)概览 VSCode插件开发全攻略(二)HelloWord VSCode插件开发全攻略(三)package.json详解 VSCode插件开发全攻略(四)命令. ...
随机推荐
- sqlsugar的sum的用法
通过论坛的检索 查到三篇文章是关于sum的 http://www.codeisbug.com/Ask/9/4531 http://www.codeisbug.com/Ask/14/4128 文章1:2 ...
- HDU 5916 Harmonic Value Description (构造)
题意:给你 n 和 m,求一个1-n的排列,使得∑gcd(Ai,Ai+1) 恰为第 m 小. 析:可以想到最小的就是相邻都互质,然后依次,第 m 小就可以有一个是gcd为 k,然后其他的为1喽. 那 ...
- spoj 1693 COCONUTS - Coconuts【最小割】
s向所有信仰1的人连(s,i,1),所有信仰0的人连(i,t,1),对于朋友关系,连接双向边,流量为1.跑最大流的结果即为答案. 考虑这样做的意义.最小割就是把总点集分割为两个点集S,T,使得所有\( ...
- springboot(九) Cache缓存和Redis缓存
1. Cache缓存 1.1 缓存的概念&缓存注解 Cache 缓存接口,定义缓存操作.实现有:RedisCache.EhCacheCache.ConcurrentMapCache等 Cach ...
- 由 var str = 'hello world' str.attr ='666'; 到包装类型
近期有些小伙伴在公司的一道面试题踩了坑, 今天特地跟大家一起分享下: 原题如下: var str = 'hello world'; str.attr = '666'; console.log(str ...
- maven-将依赖的 jar包一起打包到项目 jar 包中
前言: 有时候在项目开发中,需要很多依赖的 jar 包,其中依赖的 jar 包也会依赖其他的 jar 包,导致jar 包的管理很容易不全,以下有两种方法可以规避这个问题. 一.在pom.xml 文件中 ...
- _bzoj1015 [JSOI2008]星球大战starwar【并查集】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1015 倒过来做就ok了. #include <cstdio> #include ...
- zoj 3649 lca与倍增dp
参考:http://www.xuebuyuan.com/609502.html 先说题意: 给出一幅图,求最大生成树,并在这棵树上进行查询操作:给出两个结点编号x和y,求从x到y的路径上,由每个结点的 ...
- 1475 建设国家 DP
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1475 这题转化过来就是,给定n个点,每个点都有一个过期时间,一个价值.现 ...
- android开发学习 ------- volley网络请求的实例
在 http://www.sojson.com/httpRequest/ 上对http进行访问,将此访问在android中的应用 ********************************* ...