繁体   English   中英

在Windows 7下的Emacs中使用冰柱查找文件

[英]Finding files using icicles in Emacs under Windows 7

问题的简短版本:即使仅给出文件名的部分匹配,我如何也能使icicles有用地搜索目录和子目录中的文件?

编辑:简短的答案是在目录的顶层使用icicle-locate-file ,并使用S-Tab(shift-tab)开始完成而不是普通选项卡。 此答案中有更多详细信息。

就像附录一样,此后我放弃了icicles ,因为每次使用icicle-locate-file ,要花10秒钟的时间在相关的(大)目录树中icicle-locate-file 也许可以通过icicles方式解决这种延迟,可能是通过创建和icicles “收集”的文件集来实现,但是我开始感到潜在的好处正在被解决此问题的前期成本和保持成本所侵蚀。文件集已更新。 正如icicles的作者在下面指出的那样,访问* nix的locate命令将允许我使用icicle-locate ,它比icicle-locate-file更快。 但是,我在Windows上运行,而Everything实用程序对我不起作用 所以,回到丰富的使用IDO和书签将扩展为dired缓冲区。

==========

较长的版本...由于Emacs(24.3.1)现在是我的主要开发环境,因此我一直在探索提高效率的方法,尤其是在一段时间内特别是关于文件名完成方面。 这个问题的几个出色答案将我ido-mode了我现在正在使用的ido-modedired-x

另一个很好的建议是Emacs的书签 特别是,将dired缓冲区定义为书签,并使用Cx rb mybook1跳转到它们,甚至从Cx Cf迷你缓冲区调用Cx rb此页面都很有帮助 ),都是两种非常有用的策略。

有一些人提到anything和它的后继者helm 我一直无法获得在Windows 7上运行的两个程序包的文件位置部分。显然,它们依赖于Everything的命令行版本,但这对我来说是失败的,如本问题所述 ,对此有一些有用的答复,但没有明确的答复答案。 看来它可以在* nix上正常运行,但是在Windows上关于helm-locate等的讨论并不多。 这样就可以算出helmanything可以完成文件名的内容。

这使我陷入冰柱。 在一个关于在子目录中进行查找文件搜索的问题中 ,提问者评论说,他们已经看过“ ido和icicles,但它们似乎工作得很浅,仅在当前目录中起作用”。

针对这种情况,出现了对冰柱的评论:“如果需要,您可以在系统上搜索任何文件,将文件名和路径的任何部分进行匹配”,并指向冰柱文件名输入页面。 尽管我赞赏为icicle提供的帮助页面上付出的巨大努力,但我认为这一功能不是非常有用,因为它主要由icicle功能描述列表组成。 对我来说有用的是一个指导您逐步查找文件的教程。

让我们假设以下内容。

  • 我正在运行Windows 7的Emacs 24.3.1安装。
  • 我有一个包含一些文件和文件夹的顶级目录。 在这种情况下,它是c:/iciclestest/
  • 我知道树的这一部分中有一个文件,文件名中包含“ grob”。
  • 我想使用冰柱查找此文件。 我已经在我的init文件中放入了(require 'icicles)(icy-mode 1)

所以,我们走了。 在暂存缓冲区中启动Emacs。 点击CxCf。 我得到一个File or directory提示,在左侧带有一个紫色加号,我认为这表明这是冰柱的多命令之一
冰

点击选项卡将使我得到这个微型框架,向我显示当前目录的内容。
冰

我点击了folder1子目录上的tab,冰柱向我展示了其中的内容,正如人们所期望的那样。 冰

您会看到几个名称中带有“ grob”的文件。
是的,Cg清除所有内容,然后再次清除CxCf。 输入“ grob”。 我收到“无前缀补全”消息。 这让我有些惊讶,因为我期望冰柱会有某种像ido-mode这样的模糊匹配。 冰

好吧,也许我需要一个不同的命令。 让我们尝试Mx icicle-locate-file ,它给我以下提示: 冰

如果我输入“ grob”并点击确认,我将得到一个新文件,如下所示。 冰

回顾一下:我想做的就是输入一个字符串,然后让冰柱去查找包含该字符串的文件或文件夹。 我的主要dev文件夹包含数十个目录和数千个文件,因此在Emacs中快速查找将是一个天赐之选。

我意识到Windows上不存在locate命令,因此功能在某些方面受到限制,但是我认为基于用户输入的字符串从当前目录中递归搜索文件和子​​目录会很简单。 我想念什么? 我要这样做正确吗? 可以在冰柱中完成吗?

  1. 您需要多读一些Icicles文档:使用S-TAB而不是TAB进行适当的 (正则表达式或子字符串)完成。 这显然就是您想要的:将grob作为子字符串进行匹配。 (无需为此进行任何模糊匹配。)

  2. 由于要在该目录下的任何位置匹配grob文件,请使用icicle-locate-file 以该目录为起点。 (并且由于要在文件名中的任何位置匹配grob ,因此请使用S-TAB来完成。)

  3. 冰柱确实提供了“像ido-mode一样的模糊模糊匹配”(实际上有很多whizzier )。 Ido的“ flex”匹配与Icicles的“ scatter”匹配相同。

  4. 您可以设置要成为模糊匹配类型之一的完成类型。 在小缓冲区中, C-(循环在前缀完成方法之间。M- M-(循环在无完备方法之间。真正的模糊匹配是前缀完成方法。flex / scatter匹配是穷人的模糊匹配,它是一个穷人的模糊匹配。 apropos完成方法(因此,请使用M-(进行循环)。要更改默认匹配,因此无需循环以获取所需的匹配,请自定义选项icicle-S-TAB-completion-methods-alisticicle-TAB-completion-methods

除了关于icicle-locate-file的答案外,您还可以使用M-+ CF (命令icicle-visit-marked-file-of-content-recursive 递归方式找到位于标记的Dired子目录 ,其标记的子目录等中icicle-visit-marked-file-of-content-recursive ),如果使用两冰柱Dired +

该答案提供了详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM