我想构建一个扩展,在编辑器中编辑文件中的所有链接。应该是这样的
:
<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))
可以让你选择的文本。