一、媒介
在上一篇文章里,我扼要引见了 VSCode 插件开辟的基础流程,同时解说了怎样猎取文件夹绝对途径和用户输入的要领。近来又开辟了一个新的插件,主要用途是替代当前编辑文件的内容。google 了一圈,发明引见这方面的文章很少,特此纪录一下,愿望对有相似需求的人有一些协助。
二、需求
需求很简朴,我需要将下面文件的内容:
export default {
add_member#
manage_member_card#
member_setting#
search_member#
edit_member#
delete_member#
assign_consultant#
add_member_tag#
import_member#
modify_member_point#
};
替代为:
export default {
add_member: 'ce0',
manage_member_card: 'ce1',
member_setting: 'ce2',
search_member: 'ce3',
edit_member: 'ce4',
delete_member: 'ce5',
assign_consultant: 'ce6',
add_member_tag: 'ce7',
import_member: 'ce8',
modify_member_point: 'ce9',
};
能够理解为一个简朴的自动化编号东西。个中要处理的题目主要有下面三个:
- 猎取当前文件途径
- 读取文件内容
- 写文件内容
下面引见怎样完成。
三、完成
最先认为 VSCode 有现成的 API 能够取到当前文件内容,但找了一圈搜不到,只能经由过程迂回的体式格局完成。
第一步,猎取当前文件的途径:
const currentlyOpenTabfilePath = vscode.window.activeTextEditor.document.fileName;
第二步,读取文件内容,并拆分为数组
const fs = require('fs');
const fileContentArr = fs.readFileSync(currentlyOpenTabfilePath, 'utf8').split(/\r?\n/);
第三步,写文件。因为没法逐行替代文件内容,只能现将本来的文件清空,再一行一行增加归去。
fs.truncateSync(currentlyOpenTabfilePath);
fileContentArr.forEach( (line, index) => {
let content = line;
if (line.slice(-1) == '#') {
content = xxxxx;
}
fs.appendFileSync(currentlyOpenTabfilePath, content + ((index == contentLength - 1) ? '' : '\n'));
})
四、总结
实在这个需求完成起来照样蛮简朴的,主如果要根据 VSCode 的特点将思绪理顺,再一步步完成。如果有更好的完成体式格局,请务必留言给我