提问人:Pekka 提问时间:10/31/2009 最后编辑:Pekka 更新时间:7/20/2010 访问量:801
智能文件搜索窗口可以忽略空格并在代码中搜索?
Intelligent file search for windows that can ignore whitespace and search in code?
问:
有没有人知道一个易于使用且是程序员的基于 Windows 的搜索工具 友好。
我正在寻找的功能:
忽略搜索中的空格
= 能够找到
myTestFunction ( $parameter, $another_parameter, $yet_another_parameter )
{ doThis();
使用查询
myTestFunction($parameter,$another_parameter,$yet_another_parameter){doThis();
没有正则表达式。
“语义上”搜索代码(对我来说,它必须是 PHP):
- 仅在评论中搜索
- 仅搜索函数名称
- 搜索名为 $xyz 的参数
- 仅搜索(在此处插入代码构造)
如果周围没有,那么是时候有人开发它了!:) 我为此开了赏金。
答:
看看 Google 桌面 API,它有一套非常强大的方法来做你正在寻找的事情。
当然,它需要您安装 Google 桌面。
稍加审查后,它提供了一些功能,但不是您需要的那么具体。
评论
我非常成功地将 ack 用于这种事情,尤其是在尝试在大型代码库中查找内容时。我自己在 linux 上运行它,但我看不出它有什么理由不能在 Windows 或至少在 Cygwin 上运行。看看吧,我想你会发现它正是你要找的。
我真的很喜欢 Crimson Editor,它允许正则表达式搜索。在过去的六年里,它帮助了我很多。我认为它会满足您的需求。试试吧。
评论
“语义上”搜索代码(对我来说,它必须是 PHP):
为此,您可以(我认为应该)使用 token_get_all()
使用一些自定义代码
忽略搜索中的空格
一个简单的正则表达式就足够了。这取决于您的正则表达式库,但大多数都带有空格修饰符/标志。
评论
对于我的 Windows 桌面搜索,我使用 Agent Ransack。我用它来替代 Windows 搜索。
您可以使用正则表达式,但如果您想避免直接输入它们,则有一个不错的输入屏幕。
评论
请参阅我们的 SD 搜索引擎。这是一个语言敏感的搜索引擎,旨在搜索大型代码库,具有针对C,C++,Java,C#,COBOL,JavaScript,Ada,Python,Ruby和许多其他语言的特殊语言分类器,包括您的特定目标语言PHP(PHP4和PHP5)。
我认为它满足了您的所有要求。
它为语言元素编制索引,因此跨大型代码库的搜索速度非常快(Linux 内核 ~~ 750 万行 --> 2.5 秒)。(索引步骤运行 在 Windows 上,但显示引擎是 Java 语言。
Search hits are shown in one-line context hit window showing the file and line number, as well as the line with the hit highlighted. Clicks on hits bring up the source code, tabs expanded appropriately, and the line count right even for languages which have odd line counting rules (such as GCC WRT form characters), with the hit line and hit text highlighted. Clicking in the source window will launch your favorite editor on the file.
Because it understands language elements, it ignores language-specific whitespace. It skips over comments unless you insist they be inspected. Searches thus ignore whitespace, comments and lineboundaries (if the language thinks lineboundaries are whitespace, which is why there are langauge-specific scanners). The query language allows you to specify which language tokens you want (specific tokens in quotes, or generic tokens such as identifiers I, numbers N, strings S, operators O and punctuation P) with constraints on the token value as well as a series of tokens.
Your example search:
myTestFunction($parameter,$another_parameter,$yet_another_parameter){doThis();
would be expressed to the search engine precisely as:
I=myTestFunction '(' I ',' I ',' I ')' '{' I=dothis '(' ')' ';'
but it would probably be easier (less typing) to find it as:
I=myTest* ... I=dothis
where I=myTest* means an identifier starting with myTest and ... means "near".
The Search Engine also offer regular expressions searches on the text, if you insist. So you still have grep-like searches (a lot slower than indexed searches) but with the hit window and source display windows too.
评论
I use TextPad for searching code files in Windows. It has a very handy find-in-files function (Search / Find In Files) and you can use regex which should meet any search requirements. In the search results it will list the file location, line number and a snippet from that line.
评论