5个版本
0.2.1 | 2023年3月16日 |
---|---|
0.2.0 | 2023年3月14日 |
0.1.2 | 2023年3月14日 |
0.1.1 | 2023年3月14日 |
0.1.0 | 2023年3月13日 |
#716 在 开发工具
425KB
72 代码行
Comby Search
Comby Search是一个方便的包装器,围绕Comby提供代码搜索功能。
为什么选择Comby Search?为什么选择Comby?
因为Comby默认提供了代码重写功能,在执行-match-only
时没有漂亮的输出。Comby Search围绕Comby并解析-match-only
输出,使其更容易搜索和查看结果。
为什么使用Comby?更多详情请见:https://github.com/comby-tools/comby#isnt-a-regex-approach-like-sed-good-enough
但简而言之:Comby提供的搜索功能比正则表达式更好。它自动处理空白字符(如果你曾经尝试在正则表达式中搜索多行代码,你就会知道),具有上下文感知(例如,它不会匹配注释代码)...
依赖项
Comby Search依赖于以下工具,您应该先安装它们
- Comby (https://github.com/comby-tools/comby)
- Ripgrep (https://github.com/BurntSushi/ripgrep)
安装
您可以使用cargo
安装
cargo install comby-search
或者从源代码编译。
用法
Usage: cb [OPTIONS] <QUERY>
Arguments:
<QUERY> Your code search query
Options:
-f, --filter <PATTERN> File filter pattern, for example: '*.ts,!*.spec.ts'
-l, --line-margin <MARGIN> Number of lines to display before and after the matched search result
-h, --help Print help
要启动新的搜索,请运行以下命令。有关搜索语法的更多信息,请参阅Comby文档。
$ cb '<search query>'
例如
$ cb 'struct :[A] { :[B] }'
您还可以使用以下命令限制搜索范围到一些特定的文件
$ cb -f '*.ts,*.java,!*.js' 'struct :[A] { :[B] }'
默认情况下,匹配结果将显示在前后各有3行边距,您可以使用--line-margin
或-l
选项来更改此设置
$cb -l 10 'foo'
示例
以下是一些使用cb
的搜索示例。
- 在TSX文件中查找所有箭头函数
$ cb -f '*.tsx,*.jsx' 'const :[1] = (:[2]) => { :[3] }'
- 是否有调用
superFoo
函数且参数为空字符串的调用?
$ cb 'superFoo(:[2] "" :[3])'
- 在所有Java文件中查找所有for循环,但不包括测试文件
$ cb -f '!*Test.java' 'for ([:1]) { :[2] }'
- 查找所有返回String的Rust函数
$ cb -f '*.rs' 'fn :[1] (:[2]) -> String'
- 查找Rust特质(你能区分吗?)
$ cb 'trait :[1] { fn :[2](:[3]); }'
# and
$ cb 'trait :[1] { fn :[2](:[3]) -> :[4]; }'
依赖项
~1–11MB
~75K SLoC