我是 RipGrep 的常规用户rg
,但有一件事我始终搞不懂,而且经常发现自己想要搜索仅有的在不是评论。
很遗憾,
- 这看起来不像是一个一流的功能;
- 看起来,
rg
的多表达式支持(rg -e "a" -e "b"
)只能是布尔或,而不是布尔与——即,它添加了额外的结果,而不是删除以前的结果; - 最简单的解决方案是使用 shell (
rg 'a' | rg 'b'
),但它有足够多的缺点,让人觉得它不是一个解决方案¹。
因此,我正在寻找一种真正使此行为变得顺畅的流程或替代方案。有人有喜欢或惯用的方式来做到这一点吗?
尽管管道两次通过的方法在某种程度上是可行的,但它在很多对我来说很重要的方面都失败了:
- 无法在 Vim 内部使用,我大部分的搜索都是在 Vim 内部用
:Ack
或类似方法进行的;- 即使在命令行,也会丢失上下文和设置:各种功能,例如打印行号、用 ANSI 代码为结果着色(包括上下文行),在两个互不了解的独立进程中重新启用/重新实现变得非常复杂和脆弱;
- 最糟糕的是,使用第二个正则表达式意味着您失去了多文件类型感知能力 — 即,grep 出不以 开头的解决方案
^\s*#
将捕获 Ruby 代码库中的大多数注释,但对 JavaScript 或 C 部分则无能为力。您是否链接了更多调用?编写一个超级复杂的多语言注释捕获正则表达式?