Für die Einstellungsdatei (Eigenschaftendatei) von Java9 und früheren Anwendungen konnte Japanisch (2-Byte-Code) nicht so verwendet werden, wie es ist, und es musste durch einen Code ersetzt werden, der mit '\ u' begann. Ich war in der Lage, Anwendungen vor Java9 zu warten, und es war eine mühsame und mühsame Aufgabe, native2ascii jedes Mal auszuführen, wenn ich VSCode verwendete.
Aus diesem Grund habe ich beschlossen, mit dem VScode-Plug-In eine Funktion zu erstellen, die native2ascii entspricht.
Erstellen Sie zunächst eine Umgebung für die Entwicklung von VS-Code-Plugins. Das Erstellen einer Umgebung ist "Visual Studio Code First Extension Development" von @rma. Bitte wende dich an die.
Soweit ich sehen konnte, konnte ich den Befehl auf VSCode nicht auslösen oder das Ereignis "Eigenschaftendatei lesen" abrufen (bitte geben Sie mir einige Informationen), daher habe ich den Befehl VSCode manuell verwendet. Wir fuhren mit der Konvertierung (Zeichen → Codierung) und Umkehrung (Code → Zeichen) mit fort.
Zeichen → Codierung wurde mit dem folgenden Gefühl realisiert.
Außerdem entspricht es keinen Ersatzzeichen.
function ascii(e: vscode.TextEditor, d: vscode.TextDocument, sel: vscode.Selection[]) {
console.log(d.getText());
let text = d.getText();
let newTest = text.split("\n");
let replaced = "";
newTest.forEach(val => {
let reg = val.match(/([^\x01-\x7E])/g);
if (reg) {
let t = reg.map(code => {
let unicode = code.charCodeAt(0).toString(16);
return {code, value:`\\u${unicode}`};
}).reduce( (v,obj) => {
let {code, value} = obj;
let reg = new RegExp(code);
return v.replace(reg, value);
}, val);
replaced = `${replaced}${t}\n`;
} else {
replaced = `${replaced}${val}\n`;
}
});
e.edit((builder)=>{
if (e) {
let startPos = e.document.positionAt(0);
let endPos = e.document.positionAt(text.length);
let allRange = new vscode.Range(startPos,endPos);
builder.replace(allRange,replaced);
}
});
}
Es ist nicht viel anders als das codierte. Ich erstelle Zeichen aus Unicode.
function reverse(e: vscode.TextEditor, d: vscode.TextDocument, sel: vscode.Selection[]) {
console.log(d.getText());
let text = d.getText();
let newTest = text.split("\n");
let replaced = "";
newTest.forEach(val => {
let reg = val.match(/(\\u[0-9|a-f]{4})/g);
if (reg) {
let t = reg.map(unicode => {
let codeStrs = unicode.split("\\u");
let codePoints = parseInt(codeStrs[1], 16);
return {code:`\\${unicode}`, value:String.fromCharCode(codePoints)};
}).reduce( (v,obj) => {
let {code, value} = obj;
let reg = new RegExp(code);
return v.replace(reg, value);
}, val);
replaced = `${replaced}${t}\n`;
} else {
replaced = `${replaced}${val}\n`;
}
});
e.edit((builder)=>{
if (e) {
let startPos = e.document.positionAt(0);
let endPos = e.document.positionAt(text.length);
let allRange = new vscode.Range(startPos,endPos);
builder.replace(allRange,replaced);
}
});
}
native2ascii Ich habe die folgenden Funktionen erstellt und zusammengefasst, damit die oben erstellten Funktionen durch Befehle aufgerufen werden können. Rufen Sie diese Funktion mit registerCommand auf und Sie sind fertig.
function native2ascii() {
if (!vscode.window.activeTextEditor) {
vscode.window.showInformationMessage('Open a file first to manipulate text selections');
return;
}
var items: vscode.QuickPickItem[] = [];
items.push({ label: "ascii", description: "Vom Zeichen in Unicode konvertieren" });
items.push({ label: "reverse", description: "Von Unicode in Zeichen konvertieren" });
Window.showQuickPick(items).then((selection) => {
if (!selection) {
return;
}
let e = Window.activeTextEditor;
if (e) {
let d = e.document;
let sel = e.selections;
switch (selection.label) {
case "ascii":
ascii(e, d, sel);
break;
case "reverse":
reverse(e, d, sel);
break;
default:
console.log("hum this should not have happend - no selection")
break;
}
}
});
}
Packen Sie das erstellte Plugin. Ich habe VSCE verwendet. Ich habe es mit dem folgenden Befehl installiert.
npm install -g vsce
Packen Sie es nach der Installation mit dem folgenden Befehl. Wenn Sie README.md nicht neu schreiben, schlägt die Verpackung fehl.
vsce package
Der Quellcode wird in GitHub gespeichert.
Die Umgebung für die Erstellung von Plug-Ins war umfangreich und es gab keinen Ort, an dem man erwischt werden konnte (dank @rma). Es war mein erstes Mal, dass ich Typoskript verwendete, aber seit ich ES2015 berührte, fühlte ich mich nicht unwohl. Vielmehr hat VScode eine gute Sprachunterstützung und ich wollte ernsthaft Typoskript verwenden.
Recommended Posts