icicles
问题的简短版本:即使只给出文件名的部分匹配,我如何才能有效地搜索目录和子目录中的文件?
编辑:简短的回答是icicle-locate-file
在目录的顶层使用并使用 S-Tab (shift-tab) 开始完成而不是普通选项卡。此答案中的更多详细信息。
作为附录,我icicles
在此之后放弃了,因为每次使用icicle-locate-file
. 可能有办法解决这种延迟,也许是通过创建和“收集”的文件集icicles
,但我开始觉得潜在的好处正在被解决这个问题的前期成本和保持文件的成本所侵蚀。文件集更新。正如作者在icicles
下面指出的,访问 *nix 的locate
命令将允许我使用icicle-locate
,这比icicle-locate-file
. 但是,我在 Windows 上运行,并且 Everything 实用程序对我不起作用。所以,回到大量使用 IDO 和扩展到dired
缓冲区的书签。
==========
更长的版本... 由于 Emacs (24.3.1) 现在是我的主要开发环境,我一直在探索提高效率的方法,特别是在文件名完成方面有一段时间了。对这个问题的几个很好的答案将我指向ido-mode
and dired-x
,这两个我现在都在使用。
另一个很棒的推荐是 Emacs 的书签。特别是,将dired
缓冲区定义为书签并使用C-x r b mybook1
甚至C-x r b
从C-x C-f
minibuffer 调用(此页面很有帮助)跳转到它们是两个非常有用的策略。
有几个人提到anything
了它的继任者helm
。我一直无法获得在 Windows 7 上运行的任何一个包的文件位置部分。显然它们依赖于Everything的命令行版本,但这对我来说失败了,正如这个问题中所详述的那样,对此有一些有用的回应,但没有确定的答案。似乎它在 *nix 上运行顺利,但helm-locate
在 Windows 上没有太多关于 etc 的讨论。所以这算在内helm
并anything
用于文件名完成。
这让我想到了冰柱。在一个关于在子目录中进行查找文件搜索的问题中,提问者评论说他们已经查看了“ido 和 icicles,但它们似乎只在当前目录中工作很浅”。
作为对此的回应,出现了关于 icicles 的评论:“如果需要,您可以搜索系统上的任何文件,匹配文件名和路径的任何部分”,并带有指向Icicles 文件名输入页面的指针。虽然我很欣赏 icicles 帮助页面所付出的巨大努力,但我并没有发现这个很有用,因为它主要包含 icicles 功能的描述列表。对我有用的是一个指导您查找文件的教程。
让我们假设以下内容。
- 我正在运行 Emacs 24.3.1 的 Windows 7 安装。
- 我有一个包含一些文件和文件夹的顶级目录。在这种情况下,它是
c:/iciclestest/
。 - 我知道在树的这一部分某处有一个文件,其中有“grob”作为文件名的一部分。
- 我想用 icicles 来找到这个文件。我已将
(require 'icicles)
and(icy-mode 1)
放入我的 init 文件中。
所以,我们走吧。在暂存缓冲区中启动 Emacs。点击 Cx Cf。我收到一个File or directory
提示,左侧有一个紫色加号,我认为这表明这是 icicles 的multi-commands之一。
点击选项卡让我得到这个迷你框架,向我展示当前目录的内容。
我点击folder1
子目录上的选项卡,冰柱向我显示了其中的内容,正如人们所期望的那样。
您可以看到几个名称中带有“grob”的文件。
对,Cg 清除所有内容,然后再次 Cx Cf。输入“格罗布”。我收到“无前缀完成”消息。这让我有点惊讶,因为我预计 icicles 会像 ido-mode 那样具有某种奇妙的模糊匹配。
好吧,也许我需要一个不同的命令。Let's try M-x icicle-locate-file
,它给了我这个提示:
如果我输入“grob”并点击确认,我只会得到一个新文件,如下所示。
回顾一下:我想做的是输入一个字符串,然后让冰柱去寻找包含该字符串的文件或文件夹。我的主开发文件夹有很多目录和数千个文件,所以在 Emacs 中快速查找将是天赐之物。
我意识到该locate
命令在 Windows 上不存在,因此功能在某些方面会受到限制,但我认为基于用户输入的字符串从当前目录递归搜索文件和子目录会很简单。我错过了什么?我会以正确的方式解决这个问题吗?这可以在冰柱中完成吗?