weekly icon indicating copy to clipboard operation
weekly copied to clipboard

【工具自荐】ast-grep VSCode——更智能、更方便的代码搜索替换工具

Open HerringtonDarkholme opened this issue 1 year ago • 9 comments

正则表达式虽然强大,但在处理代码搜索和替换时,无法跨行匹配,处理嵌套结构效果不佳,且很难有效地忽略注释,使得其应用范围受限。

推荐一款新VS Code插件——ast-grep VSCode,运用结构化搜索与替换(Structural Search/Replace)的技术,有效解决了这些问题。 支持众多的编程语言,包括JavaScript、TypeScript、Python、Ruby、Java、C#、Go、Rust等等。它在编辑器内部直接进行SSR查询,无需切换搜索环境,让搜索替换过程更加流畅;而查询结果边执行边显示,能即时查看和编辑,大大提高了工作效率。

此外,ast-grep VSCode还支持linting和代码修复功能,可以方便自定义Linter规则。

特性 截图
搜索模式
替换预览
代码lint

HerringtonDarkholme avatar Mar 06 '24 19:03 HerringtonDarkholme

天呐,这简直太酷了

baiwusanyu-c avatar Mar 07 '24 08:03 baiwusanyu-c

这下舒服了

wangrongding avatar Mar 08 '24 00:03 wangrongding

That's cool.

yaolifeng0629 avatar Mar 08 '24 14:03 yaolifeng0629

@ruanyf 周刊292中对于此工具的介绍错误,对 AST(抽象语法树)搜索/替换而不是正则表达式。二者各有优劣,不过一个比较明确的方面是 AST 替换可以简单且正确地处理括号之类的嵌套(正则正确处理必须使用递归正则,这个东西似乎到现在也就Perl有?)。

no1xsyzy avatar Mar 14 '24 07:03 no1xsyzy

@no1xsyzy 感谢指正!能看那么仔细真是太感谢了! ast-grep主要解决的是正则不能理解代码而且难写的问题,比较适合代码重构的场景。

HerringtonDarkholme avatar Mar 14 '24 07:03 HerringtonDarkholme

大神呀, 这支持C++吗?

uctdsb avatar May 03 '24 11:05 uctdsb

@uctdsb https://ast-grep.github.io/reference/languages.html 支持的

HerringtonDarkholme avatar May 03 '24 16:05 HerringtonDarkholme

希望能支持markdown,比如搜出所有图片

amitbha avatar May 04 '24 04:05 amitbha

@amitbha 可以使用自定义语言扩展 来支持markdown的搜索

HerringtonDarkholme avatar May 04 '24 05:05 HerringtonDarkholme

大神呀, 这支持C++吗?

同问,嵌入式C和misra-c支持否;

AmyJobs avatar Jun 16 '25 09:06 AmyJobs

@AmyJobs 有 C 语言支持 https://ast-grep.github.io/catalog/c/ 更细化的 C 语言guideline 还是 C 语言

HerringtonDarkholme avatar Jun 16 '25 13:06 HerringtonDarkholme