我想在扩展部分中执行命令,以在工作空间中的所有文件中搜索某个单词(工作空间包含超过15k个文件),然后将该单词替换为其他单词,但是我找不到用于的任何VSCode API这种原因。
你们也许知道是否有一些命令吗?
答案 0 :(得分:1)
你可以用宏来做到这一点。您可以对其进行编码以依次打开每个文件,搜索并替换文本,然后保存文件。
类似于 VSCode 宏:
https://marketplace.visualstudio.com/items?itemName=EXCEEDSYSTEM.vscode-macros
答案 1 :(得分:0)
我扩展了我编写的扩展程序,该扩展程序可以使用用户定义的搜索和替换命令执行您想要的操作。见Find and Transform。它基本上为 workbench.action.findInFiles
命令构建参数,如下所示。代码太多无法在此处显示,但请查看 repository,尤其是 search.js
。
在扩展中,您可以这样做:
vscode.commands.executeCommand('workbench.action.findInFiles',
{
query: "customCommentHowdy", // arguments to the findInFiles command
replace: "that's so swell",
triggerSearch: true,
preserveCase: true,
useExcludeSettingsAndIgnoreFiles: true,
isRegex: false,
isCaseSensitive: true,
matchWholeWord: true,
filesToInclude: "",
filesToExclude: "./*.css"
}).then(() => { // this command just returns 'undefined'
setTimeout(() => {
vscode.commands.executeCommand('search.action.replaceAll');
}, 1000);
});
我无法让它在没有延迟的情况下触发 replaceAll
- 对于 15k 文件,您可能需要增加一点。 Async/await
似乎也没有帮助。
您仍会收到有关实际执行 replace
的确认框,我认为这无法避免。
如果您没有在其中放置 search.action.replaceAll
命令,那么用户将必须自己点击 replaceAll
按钮(然后验证是否确实想要进行替换)。
执行此操作时,搜索面板将出现并聚焦。