【问题标题】:Detecting text input to VSCode activeTextEditor检测到 VSCode activeTextEditor 的文本输入
【发布时间】:2019-04-15 20:39:33
【问题描述】:
我正在为我的学校开源项目开发 VScode 扩展。
我想知道有没有办法检测到activeTextEditor 窗口的文本输入?
例如,如果有人要粘贴一个字符串,我可以抓取检测到类似于 JavaScript 中的 OnInput 的字符串吗?设置将是拼写检查或替换命令,类似于 Visual Studios 的智能感知,您键入 prop +tab +tab 它会自动生成代码。
如果您听说过一些可行的方法,请告诉我。谢谢
【问题讨论】:
标签:
javascript
input
visual-studio-code
electron
vscode-extensions
【解决方案1】:
您要查找的 api 是 vscode.workspace.onDidChangeTextDocument。每当 VS Code 知道文档发生更改时,都会触发此事件。它使用包含所有文本更改的 TextDocumentChangeEvent 对象触发:
import * as vscode from 'vscode'
export function activate() {
vscode.workspace.onDidChangeTextDocument(changeEvent => {
console.log(`Did change: ${changeEvent.document.uri}`);
for (const change of changeEvent.contentChanges) {
console.log(change.range); // range of text being replaced
console.log(change.text); // text replacement
}
});
}
如果您只关心活动编辑器文本的更改,只需检查changeEvent.document 是否与活动编辑器的document 匹配。