VS 代码扩展:在工作区中查找和替换字符串

VS Code Extensions: Find and replace a string in workspace

我用谷歌搜索了很多,但没有找到任何有效的方法来搜索 vscode.workspace 中的特定文件并替换找到的术语。

基本上 我想在 vscode.workspace 中搜索名为 app.component.ts 的文件,并检查该文件是否包含 // my-marker。如果是这样,则应将此标记替换为其他字符串。

有人知道这是否可能吗?如果是这样,怎么办? 这是我的方法:

function createAppEnvironment(name: string)
{
  if(name != undefined)
  {
    // replace all blanks ' ' with dashes '-'
    name = name.replace(/\w/g, '-');

    vscode.workspace.findFiles('app/app.component.ts', '', 1).then(
        // all good
        (result: vscode.Uri[]) => {
            vscode.workspace.openTextDocument(result[0]);
            vscode.commands.executeCommand('edit.findAndReplace');
        },
        // rejected
        (reason: any) => {
            // output error
            vscode.window.showErrorMessage(reason);
        });

    // Display a message box to the user
    // vscode.window.showInformationMessage('Successfully created a new App!');
}
else
{
    vscode.window.showWarningMessage("Nothing was created, due to the fact that you haven't entered a name.");
}

}

我自己没有做过,所以我有点想在这里...

而不是打开 find/replace:

  1. 使用 TextDocument.getText() 获取文本。
  2. 使用正则表达式查找您的标记。
  3. 使用 TextDocument.positionAt() 获取一个 Position,用于在您需要编辑的文档中构建一个 Range。
  4. 创建一个代表您所做更改的 WorkspaceEdit 对象,使用 WorkspaceEdit.replace() 指示实际编辑。
  5. 使用 Workspace.applyEdit() 应用编辑。