3

vscode.workspace私はたくさんグーグルで調べましたが、特定のファイル内を検索して見つかった用語を置き換える有効な方法が見つかりませんでした。

基本的に、 app.component.tsという名前のファイルを検索し、そのファイルに // my-marker が含まれているかどうかを確認します。vscode.workspaceその場合、このマーカーは他の文字列に置き換える必要があります。

これが可能かどうか誰にもわかりますか?もしそうなら、どのように?これが私のアプローチです:

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.");
}

}

4

1 に答える 1

6

私はこれを自分でやったことがないので、ここでちょっと羽ばたいています...

検索/置換を開く代わりに:

  1. TextDocument.getText() を使用してテキストを取得します。
  2. 正規表現を使用してマーカーを見つけます。
  3. TextDocument.positionAt() を使用して、編集する必要があるドキュメントで範囲を構築するための位置を取得します。
  4. 実際の編集を示すために WorkspaceEdit.replace() を使用して、変更を表す WorkspaceEdit オブジェクトを作成します。
  5. Workspace.applyEdit() を使用して編集を適用します。
于 2016-06-27T14:17:34.340 に答える