代码之家  ›  专栏  ›  技术社区  ›  keparo

textmate的“转到文件”模糊搜索算法是什么?

  •  15
  • keparo  · 技术社区  · 14 年前

    Textmate的“去文件”模糊搜索真是太棒了。

    有人能解释一下这些是怎么工作的吗?他们使用的方法有一个通用术语吗?

    编辑: 我对这些工具的作用有一点更详细的了解

    这些工具允许您在键入时缩小选项列表(在本例中为文件路径)。

    例如,如果我有以下文件:

    /app/models/people.rb
    /app/models/address.rb
    /app/person.rb
    /person.rb
    

    把名单缩小到 /app/models/people.rb 我可以键入以下任何内容:

    amp
    peo
    mp
    modelsp
    

    这是非常灵活的,我发现我自己错过了这个'名单缩小'当我使用的应用程序没有它。我想了解更多关于它,以便我可以实现我自己的插件,如果我觉得有必要。希望我能解释得更好,但这就是我来这里的原因:)

    demo of command-t

    5 回复  |  直到 14 年前
        1
  •  3
  •   monksy    13 年前

    amp -> *a*m*p*
    peo -> *p*e*o*
    mp  -> *m*p*
    modelsp -> ...
    

    如果它只匹配选项列表中的一项,那么它会将该项作为预期选项返回。

        2
  •  2
  •   Rebecca Scott    13 年前

    看起来Command-T是基于 double 总分 recursive_match 中的函数 match.c 做模糊搜索。Command-T的源代码受作者的版权保护,但是可以通过在文本编辑器中打开vimball来找到源代码(下载位置在 this page

        4
  •  0
  •   Luka Rahne    13 年前

    http://en.wikipedia.org/wiki/Directed_acyclic_word_graph 具有O(L)复杂性,其中L是搜索模式的长度。

        5
  •  0
  •   sqwk    13 年前

    作为旁注:看看( Apache Solr )以及它生成索引的方式。当我试图在web上实现类似于Textmate的Command-T的东西时,我发现自己经常使用它。

    具体检查一下 EdgeNGramFilterFactory . 我相信可能有一些源代码。(不过是爪哇语)