【问题标题】:Opening multiple files at once in Emacs在 Emacs 中一次打开多个文件
【发布时间】:2010-03-10 02:52:11
【问题描述】:

在 Emacs 中使用 ido-mode 允许我使用 C-xC-f 从 minibuffer 打开文件。此方法一次只打开一个文件。

如何打开一个目录中的所有文件或指定多个文件打开?

【问题讨论】:

  • 我不知道这个解决方案是否适用(因此评论),但结合 emacsclient(参见stackoverflow.com/questions/4458245/…),您也可以在命令行中使用find。要在 emacs 中打开所有 Clojure 文件,我这样做:emacsclient `find . -type f -name "*.clj"`

标签: emacs ido-mode


【解决方案1】:

您可以只提供* 作为文件名,然后按Enter;系统会要求您确认,如果您再次按 Enter,目录中的所有文件都将打开。

请注意,“打开目录中的所有文件”涉及为其所有子目录打开 dired 缓冲区。

使用 ido-mode 时——在基本的 Emacs 查找文件提示符下——您可以使用相同的* 打开目录中的所有文件。当您确实使用 ido-mode 查找文件时,您始终可以按 C-f 以返回到通常的 Emacs 查找文件提示符。 (您可以使用 ido 来加速访问您首先感兴趣的某个目录,然后放入其中的基本查找文件。)这是使用 ido 创建新文件的一种方法(另一种是 C-j 绑定);此外,它还为您提供了使用上述* 技巧的另一种方式。

【讨论】:

  • @~unutbu:您使用的是哪个版本的 Emacs?我在 23.1.50.1 上(使用与 Emacs 捆绑的 ido.el),我刚刚检查过它即使没有我的配置也能工作,无论有没有 ido。
  • @~unutbu:实际上,有一个名为find-file-wildcards 的变量需要设置为非nil 值才能使通配符扩展工作。请参阅/usr/share/emacs/<version>/lisp/files.el.gz(请根据您的平台调整此路径;或者说C-h f find-file <RET>,然后在files.el 上再次按<RET>),第1314 行(在我的版本中),在find-file 函数的定义中.让我知道这是否有帮助,我会编辑答案以将其考虑在内。
  • @Michal:感谢您的帮助!我的 .emacs 中有 (require 'ffap)。当我删除 (require 'ffap) 时,我得到了你描述的行为。
  • @~unutbu:没问题!很高兴它现在对你有用。 :-) 据我所知,ffap 应该根据find-file-wildcards 的值调整其行为——不能保证,但也许您可能想在~/.emacs 中使用(setq find-file-wildcards t) 来尝试它。
  • Emacs 23.2.1 和 ido-mode,默认设置为 find-file-wildcards,即 t。在C-x C-f 之后输入*.txt 将打开一个文件称为 *.txt
【解决方案2】:

文件名搜索远没有更通用的模式匹配有用。

Icicles file-name completion 中,您可以从同一个微型缓冲区打开与任意数量的模式匹配的任意数量的文件。模式匹配可以是子字符串、正则表达式、模糊或前缀,您可以使用交集和互补来组合模式。

就像在 Ido 中一样,在 Icicles 中,您的 minibuffer 输入会动态过滤候选文件名。您可以选择单个候选人或选择当前匹配的所有候选人(使用 C-!)。

(你当然也可以使用文件名 groking。与 Emacs 文件名输入一样,在通配符(grok)模式上点击 RET 会将其发送到 find-file,这将打开所有匹配的文件。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2010-09-10
    • 1970-01-01
    • 2020-08-18
    • 2018-10-29
    • 2017-03-28
    • 1970-01-01
    相关资源
    最近更新 更多