English | 简体中文
🐰 vscode use 针对 vscode api 进行了二次的封装,提供了大量精简实用的函数,并且让函数名更贴近实际意义,就如 vscode 中的 lodash。npm i @vscode-use/utils -d
- registerCommand: 注册指令
- executeCommand: 触发指令
- getConfiguration: 获取 workspace configuration
- message {type:'info'|'error',message:string,buttons:['ok']}: 弹出消息
- openFile: 打开某一个文件
- addEventListener: 监听vscode中的文件切换、终端、内容变更、新增、删除等事件
- createTerminal: 快速创建一个终端
- createCompletionItem: 生成registerCompletionItemProvider的提示内容
- registerCompletionItemProvider: 根据输入生成对应的提示
- isDark: 判断当前vscode主题是否是dark
- getSelection: 获取当前鼠标所在行的信息
- getActiveTextEditorLanguageId: 获取当前文件的一个类型 javascriptreact | typescriptreact | vue 等
- createProgress: 创建一个vscode中的执行进度条
- registerInlayHintsProvider: 给出一个类似copilot的hint提示
- getCopyText: 读取粘贴板中的内容
- setCopyText 往粘贴板中塞入内容***
- updateText: 修改文本内容
- jumpToLine: 打开文件并跳转到某一行
- createBottomBar: 创建底部栏按钮
- nextTick: 修改文本内容更新后的回调
- createSquare: 创建一个方形小块
- watchFiles: 监听文件内容和删除的变化
- createEvents: 用于订阅事件通信的工具
- getActiveText: 获取到当前激活tab的文本内容
- fold: 折叠代码
- unFold: 展开代码
- registerDefinitionProvider: 提供了 option+click,实现快速跳转的功能
- registerHoverProvider: 为鼠标悬停提供回调
- registerCodeActionsProvider 注册代码动作提供程序
- openExternalUrl: 在浏览器中打开外部网址
- getLineText: 获取某一行的文本
- useTheme: 主题信息获取和操作
- isInPosition: 判断一块区域是否是另一块的子区域
- getCurrentFileUrl: 获取当前激活文件的路径
- createInput: 创建一个输入框
- getLocale: 获取本地的语言环境
- rename: 快速给文件重命名
- createDefinitionLocation 创建按下 option 后左键点击后的跳转地址数据
- setStyle 给某一块区域增加样式
- createStyle 创建样式
- getActiveTextEditor 获取当前激活的编辑器
- getKeyWords 获取 position 位置处的关键词
- setCommandParams 设置 MarkdownString 的点击 command 参数
- getOffsetFromPosition 根据 position 计算 offset
- getRootPath 获取项目根目录路径
- registerCodeLensProvider 注册文本中头部的文字按钮并绑上事件
- createCodeLens 快速创建 provideCodeLenses 中的 item
- saveFile 保存文件
- createStyleAnimation 添加样式动画
- createStyleAnimations 添加样式动画组
- getWordRangeAtPosition 获取所在位置的关键词的区域
registerCommand('vscode-use.hello', () => {
message.info('Hello World!')
})
registerCommand('vscode-use.error', () => {
message.error('Hello World!')
})
registerCommand('vscode-use.openExternalUrl', () => {
openExternalUrl('http://www.baidu.com')
})
const isZh = getLocale().includes('zh')
message.info(`当前语言:${isZh ? '中文' : '英文'}`)
addEventListener('activeText-change', (e) => {})
addEventListener('auth-change', (e) => {})
addEventListener('config-change', (e) => {})
addEventListener('editor-visible', (e) => {})
addEventListener('file-create', (e) => {})
addEventListener('file-delete', (e) => {})
addEventListener('folder-change', (e) => {})
addEventListener('rename', (e) => {})
addEventListener('selection-change', (e) => {})
addEventListener('terminal-change', (e) => {})
addEventListener('terminal-close', (e) => {})
addEventListener('terminal-open', (e) => {})
addEventListener('text-change', (e) => {})
addEventListener('text-open', (e) => {})
addEventListener('text-save', (e) => {})
addEventListener('text-visible-change', (e) => {})
addEventListener('theme-change', (e) => {})
jumpToLine(10, 'path/Uri')
onFold([
createRange([1, 0], [5, 0]),
createRange([5, 0], [10, 0])
])
unFold([
createRange([1, 0], [5, 0]),
createRange([5, 0], [10, 0])
])
updateText(edit=>{
// 在第一行插入文本
edit.insert(new vscode.Position(0, 0), 'Hello World!')
// 删除第一行的前5个字符
edit.delete(new vscode.Range(new vscode.Position(0, 0), new vscode.Position(0, 5)))
// 将第一行的前5个字符替换为 Hello World!
edit.replace(new vscode.Range(new vscode.Position(0, 0), new vscode.Position(0, 5)), 'Hello World!')
})
const activeText = getActiveText()
const lineText = getLineText(0)
const mode1 = getConfiguration('vscode-use').get('mode')
const mode2 = getConfiguration('vscode-use.mode')
setConfiguration('vscode-use.mode', 'dev')
createTerminal('test')
createBottomBar({
position: 'left',
text: '我是底部栏',
color: '#fff',
backgroundColor: '#000',
})
const pos = getPosition(100)
getCopyText().then(text=>{})
setCopyText('Hello World!')
const currentFileUrl = getCurrentFileUrl()
setSelection([0, 0], [0, 5])
setSelections([{
start: [0, 0],
end: [0, 5],
position: 'left' // 控制光标位置
}, {
start: [1, 0],
end: [1, 5],
position: 'right'
}])
watchFiles('filepath', (e) => {})
createProgress({
title: '进度条',
async done(report) {
report({
message: '进度条完成 10%',
increment: 10
})
setTimeout(() => {
report({
message: '进度条完成 50',
increment: 50
})
})
}
})
createSelect(['vue','react','svelte','solid']).then((res)=>{})
registerHoverProvider('vue', (e) => {})
registerDefinitionProvider('vue', (e) => {})
const { getCurrentTheme, getAllTheme, setTheme, } = useTheme()
const language = getActiveTextEditorLanguageId() // vue
rename('url', 'newUrl')
nextTick(()=>{})
setStyle(createStyle({
backgroundColor: 'yellow',
border: '1px solid red'
}), createRange([0, 0], [0, 10]))
createInput({
title: '我是输入框',
placeHolder: '请输入内容',
value: ''
})
const activeTextEditor = getActiveTextEditor()
const keyWords = getKeyWords(position)
const md = new vscode.MarkdownString()
md.isTrusted = true
md.supportHtml = true
const commandUri = `command:a.b?${setCommandParams(['params1', 'params2'])}`
md.appendMarkdown(`[🦘](${commandUri})`);
const offset = getOffsetFromPosition(position) // 获取当前文本,位置的offset
const offset = getOffsetFromPosition(position,code) // 获取指定code,位置的offset