如何解决VSCode以编程方式搜索和替换
我想在扩展部分中执行命令,以在工作空间中的所有文件中搜索某个单词(工作空间包含超过15k个文件),然后将该单词替换为其他单词,但是我找不到用于的任何VSCode API这种原因。
你们也许知道是否有一些命令吗?
解决方法
你可以用宏来做到这一点。您可以对其进行编码以依次打开每个文件,搜索并替换文本,然后保存文件。
类似于 VSCode 宏:
https://marketplace.visualstudio.com/items?itemName=EXCEEDSYSTEM.vscode-macros
,我扩展了我编写的扩展程序,该扩展程序可以使用用户定义的搜索和替换命令执行您想要的操作。见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
按钮(然后验证是否确实想要进行替换)。
执行此操作时,搜索面板将出现并聚焦。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。