VS代码扩展:查找并替换工作区

时间:2016-06-27 11:13:52

标签: visual-studio-code vscode-extensions

我搜索了很多内容并且没有找到任何有效的方法来搜索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.");
}

}

1 个答案:

答案 0 :(得分:3)

我自己还没有这样做,所以我有点在这里......

而不是打开查找/替换:

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