开发vs代码扩展来编辑文本



我想构建一个扩展,在编辑器中编辑文件中的所有链接。应该是这样的

:

<img src="assets/images/avatars/avatar-1.jpg" alt="">
<link rel="stylesheet" href="assets/css/icons.css">
<link rel="stylesheet" href="assets/css/uikit.css">
<link rel="stylesheet" href="assets/css/style.css"> 

:后

<img src="{% static 'assets/images/avatars/avatar-1.jpg' %}" alt="">
<link rel="stylesheet" href="{% static 'assets/css/icons.css' %}">
<link rel="stylesheet" href="{% static 'assets/css/uikit.css' %}">
<link rel="stylesheet" href="{% static 'assets/css/style.css' %}"> 

这是目前为止我的extension.js文件的代码

const vscode = require('vscode');
/**
* @param {vscode.ExtensionContext} context
*/
function activate(context) {
let disposable = vscode.commands.registerCommand('auto-django.autoDjango', function () {
const editor = vscode.window.activeTextEditor
const selection = editor.selection
const text = editor.document.getText(selection)
var regexp = /<img[^>]+srcs*=s*['"]([^'"]+)['"][^>]*>/g;
var match = regexp.exec(text);
var src = match[1];
const newText = `{% static '${src}' %}`
editor.edit(builder => builder.replace(selection, newText))
});
context.subscriptions.push(disposable);
}

所有这些代码所做的就是将第一个图像src链接更改为已编辑的链接,这很好,但它也将其替换为编辑器中的整个文本。

但是我想做的是,它应该只是替换为编辑器中的每个链接。

任何帮助将不胜感激。由于

第一件事我明白了:

editor.document.getText(some Range)接受Range而不是Selection-这就是为什么它返回所有文档文本-当参数无效时它会这样做。

editor.document.getText(new vscode.Range(selection.start, selection.end))

可以让你选择的文本。

相关内容

  • 没有找到相关文章

最新更新