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:
- 使用 TextDocument.getText() 获取文本。
- 使用正则表达式查找您的标记。
- 使用 TextDocument.positionAt() 获取一个 Position,用于在您需要编辑的文档中构建一个 Range。
- 创建一个代表您所做更改的 WorkspaceEdit 对象,使用 WorkspaceEdit.replace() 指示实际编辑。
- 使用 Workspace.applyEdit() 应用编辑。
我用谷歌搜索了很多,但没有找到任何有效的方法来搜索 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:
- 使用 TextDocument.getText() 获取文本。
- 使用正则表达式查找您的标记。
- 使用 TextDocument.positionAt() 获取一个 Position,用于在您需要编辑的文档中构建一个 Range。
- 创建一个代表您所做更改的 WorkspaceEdit 对象,使用 WorkspaceEdit.replace() 指示实际编辑。
- 使用 Workspace.applyEdit() 应用编辑。