【问题标题】:How can I get Emacs Projectile to operate like VScode's "C-p" ?如何让 Emacs Projectile 像 VScode 的 "C-p" 一样运行?
【发布时间】:2019-01-04 17:48:42
【问题描述】:

我在我的 emacs26 安装中安装了 Projectile。我的配置如下:

(projectile-mode +1)
(define-key projectile-mode-map (kbd "s-p") 'projectile-command-map)
(define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)
(projectile-global-mode) ;; to enable in all buffers
(setq projectile-enable-caching t) ;; to prevent constantly reindexing projectsx

我使用 Melpa 安装了 Projectile。

我希望 Projectile 在项目中查找文件,类似于命令 C-p 在 vscode 中的工作方式。给定以下目录:

src/
  views/
    cars.html
    dogs.html
  models/
    animals/
      dogs.js
      cats.js
    vehicles/
      cars.js
      trucks.js

如果我在 vscode 中执行C-p dogs(没有<RET>),我会看到一个包含dogs.htmldogs.js 的可选列表。据我所知,这是由 Projectile 的C-c p f 复制的。问题是当我进行models/dogs 之类的搜索时。在 vscode 中,这将只返回 dogs.js,在 Projectile 中,它什么也不返回(合理,但不是我想要的)。

我有很多子目录的大型集合/模型目录,所以我希望尽可能在 Emacs 中模拟这种 vscode 行为。

在处理多嵌套目录时,如何像 vscode 的 C-p 文件搜索一样进行 Projectile(或其他 Emacs 插件)文件搜索?

我调查了projectile-fix,但它似乎没有按我的意愿做,而且显然与我开始使用和喜欢的 Helm 不兼容。

【问题讨论】:

    标签: emacs projectile


    【解决方案1】:

    默认情况下,Projectile 使用Ido 完成。 (检查变量projectile-completion-system 的值,看看你的 Emacs 中是否有不同的配置。)

    在 Ido 中,您可以键入文件名的一部分,然后点击 C-SPC 将项目列表限制为您当前键入的内容。因此,在您的示例中,您将键入 models C-SPC dogs 以访问 dogs.js

    如果您已将 Projectile 配置为使用 Helm,则可以在匹配部分之间使用空格字符:输入 models dogs 应将匹配列表缩小到 dogs.js

    【讨论】:

      【解决方案2】:

      您可以使用helmivy 及其对应的弹丸插件helm-projectilecounsel-projectile

      但这意味着您将不得不改变您使用 emacs 的方式(至少在短期内)。无论如何,这将帮助您在未来提高工作效率,因此这是一项不错的投资。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-28
        • 1970-01-01
        • 1970-01-01
        • 2017-11-11
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多