如何让 Emacs Projectile 像 VScode 的 "C-p" 一样运行?
How can I get Emacs Projectile to operate like VScode's "C-p" ?
我已经在我的 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.html
和 dogs.js
的可选列表。据我所知,这与 Projectile 的 C-c p f
相同。问题是当我进行 models/dogs
之类的搜索时。在 vscode 中,这只会 return dogs.js
,在 Projectile 中,它 return 什么都没有(合理,但不是我想要的)。
我有一个很大的 collections/model 目录和许多子目录,所以我希望尽可能在 Emacs 中模拟这种 vscode 行为。
在处理多嵌套目录时,如何让 Projectile(或另一个 Emacs 插件)文件搜索类似于 vscode 的 C-p
文件搜索?
我调查了projectile-fix,但它似乎并不如我所愿,而且显然与我开始使用并喜欢的 Helm 不兼容。
您可以使用 helm
或 ivy
及其相应的射弹插件 helm-projectile
或 counsel-projectile
.
但这意味着您将不得不大大改变您使用 emacs 的方式(至少在短期内)。无论如何,这将帮助您在未来提高工作效率,因此这是一笔不错的投资。
默认情况下,Projectile 使用 Ido 完成。 (检查变量 projectile-completion-system
的值,看看在您的 Emacs 中是否有不同的配置。)
在 Ido 中,您可以键入文件名的一部分,然后点击 C-SPC
将项目列表限制为您当前键入的内容。因此,在您的示例中,您将键入 models C-SPC dogs
以到达 dogs.js
.
如果您已将 Projectile 配置为使用 Helm,则可以在匹配部分之间使用 space 字符:键入 models dogs
会将匹配列表缩小到 dogs.js
.
我已经在我的 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.html
和 dogs.js
的可选列表。据我所知,这与 Projectile 的 C-c p f
相同。问题是当我进行 models/dogs
之类的搜索时。在 vscode 中,这只会 return dogs.js
,在 Projectile 中,它 return 什么都没有(合理,但不是我想要的)。
我有一个很大的 collections/model 目录和许多子目录,所以我希望尽可能在 Emacs 中模拟这种 vscode 行为。
在处理多嵌套目录时,如何让 Projectile(或另一个 Emacs 插件)文件搜索类似于 vscode 的 C-p
文件搜索?
我调查了projectile-fix,但它似乎并不如我所愿,而且显然与我开始使用并喜欢的 Helm 不兼容。
您可以使用 helm
或 ivy
及其相应的射弹插件 helm-projectile
或 counsel-projectile
.
但这意味着您将不得不大大改变您使用 emacs 的方式(至少在短期内)。无论如何,这将帮助您在未来提高工作效率,因此这是一笔不错的投资。
默认情况下,Projectile 使用 Ido 完成。 (检查变量 projectile-completion-system
的值,看看在您的 Emacs 中是否有不同的配置。)
在 Ido 中,您可以键入文件名的一部分,然后点击 C-SPC
将项目列表限制为您当前键入的内容。因此,在您的示例中,您将键入 models C-SPC dogs
以到达 dogs.js
.
如果您已将 Projectile 配置为使用 Helm,则可以在匹配部分之间使用 space 字符:键入 models dogs
会将匹配列表缩小到 dogs.js
.