首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >emacs在大型项目的项目中查找文件

emacs在大型项目的项目中查找文件
EN

Stack Overflow用户
提问于 2011-11-02 01:45:48
回答 5查看 3.9K关注 0票数 9

在vim中,有一个令人惊叹的插件,叫做command-t,它可以让你模糊地搜索项目中的所有文件。我们有一个相当大的rails应用程序,有大量的文件,它能够很好地处理它,而不会有任何减慢。

我尝试了一些东西(比如ffip、textmate.el的命令-t和rinari的rinari find-in-project)。UI很棒(I <3flex),但他们都有的问题是在大型项目中,性能差到无法使用的地步。

目前,我更多地使用rinaris导航命令和ido-find-file。在他们之间,这是一个有用的设置,但在项目中有一个疯狂快速的模糊查找会很好。

有谁知道比我尝试过的更有表现力的剧本吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-06 13:01:10

我的作品的github代表在这里:https://github.com/lewang/anything-project-files

我添加了更多的anything源代码,以便anything-project-find可以替代"C-x“。所以这个想法是当你点击"C-x“时,你是在现有的缓冲区上完成的,最近的文件通过recentf (我个人把它改成使用"session.el”来代替,但这是一个小的差异),当前目录中的文件,当前项目中的文件。我发现它很方便。

我已经用了一段时间了,但是它没有经过很好的测试,所以请报告你发现的任何错误。

票数 3
EN

Stack Overflow用户

发布于 2015-05-07 19:18:28

尝试使用GNU FindBSD Find查找文件的https://github.com/redguardtoo/find-file-in-project。没有什么能比得上C的速度!

M-x find-file-in-project-by-selected是唯一需要使用的命令。

我在一些古老的上网本上测试了50000+文件,没有任何问题。

默认情况下,它使用高效的ivy-mode来过滤候选者,并使用ido-mode作为备用。我用300万个候选人测试了常春藤模式。现在您知道Emacs Lisp本身已经足够快了。

在*nix处,内核为find提供缓存,因此如果您使用相同的输入搜索文件,响应将是即时的。

此外,ivy-mode会自动将最后的搜索结果缓存到Emacs lisp变量ivy-last中,因此您可以使用M-x ivy-resume获得以前的候选结果,而不会影响Find

您可以使用(setq my-cached-result ivy-last)ivy-last存储到另一个变量中。然后你就可以M-x my-ivy-resume

代码语言:javascript
复制
(defun my-ivy-resume ()
  (interactive)
  (let* ((ivy-last (if my-cached-result my-cached-result ivy-last))
         (default-directory (ffip-get-project-root-directory)))
    (ivy-resume)))

通过这种方式,您可以存储最近1000个结果并重复使用它们。)

更新1:从版本6开始,ffip使用Emacs内置API completing-read而不是ivy-read。所以像ivy-resume这样的常春藤特有的特性还不能使用。您可以降级到版本5。ffip只是一个使用Emacs内置API的Emacs Lisp文件,所以很容易降级。

或者等待常春藤来解决这个问题(参见https://github.com/abo-abo/swiper/pull/2785 )

更新2:从版本6.1.1开始,我添加了命令ffip-find-files-resume。它比ivy-resume更强大。例如,它可以重播之前的任何操作。ivy-resume只能重放上一个操作。

票数 3
EN

Stack Overflow用户

发布于 2011-11-02 12:35:30

取决于你所说的模糊匹配是什么意思。大多数模糊匹配天生就很慢,但一些轻量级的伪模糊算法相当快。一般来说,使用正则表达式搜索可能比使用模糊匹配搜索更好。

无论如何,这个问题有两个部分:

通过项目文件和目录将项目定义为一组给定的文件和目录-- all or directories.

  • Searching
  • --all or

可以在这两个方面提供帮助:

  • Project定义,管理,etc.
  • Searching一个项目或其中的一部分:

代码语言:javascript
复制
- [Searching file content](http://www.emacswiki.org/emacs/Icicles_-_Search_Commands%2c_Overview) (and search-and-replace)
- [Locating files](http://www.emacswiki.org/emacs/Icicles_-_File-Name_Input)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7970537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档