如何为 Emacs 的模糊搜索/grep 配置预览功能

在终端下模糊搜索时, 我喜欢用 fzf + fd/rg, 待选项在左边或者上边 预览在右边或者下边, 根据我的终端比例而定:

在 Neovim 下面也有 telescope 或者 fzf-lua 等插件提供了差不多的界面:

而我现在使用的 Doom Emacs, 不管用 Helm, Ivy, 还是 Vertico, 都没有预览功能, 在模糊搜索文件或者 grep 文件时有点不方便.

Doom emacs 使用 Vertico 搜索文件的界面, Helm, Ivy, Vertico 感觉界面差不多都是这样:

Google 了 诸如 “Emacs preview files fuzzy search” 等等, 都没有找到答案, 所以我想问问各位有没有什么好方法可以预览模糊搜索窗口中当前文件的内容? 但是我不是说要复刻 fzf/telescope 的界面 – 其实我更喜欢 Emacs 的模糊列表呈现方式, telescope 一个大浮动窗口在中间感觉太霸道了容易打断思路, 而且会遮盖太多普通窗口的内容.

总的来说我希望找到一种方法, 保持目前 Emacs 候选列表呈现在底部的 style, 然后有一个可以打开/关闭的预览窗口.

有这样的包可以用吗?

1 个赞

blink-search

1 个赞

看起来不错,谢谢!很好奇为什么这个包好像关注度不高,难道大家都没有预览文件内容的需求吗?还是有什么好的不需要预览的 workflow 我没有发现?

基本不会用到预览或者根据文件名脑内预览

有预览功能的,比如用vertico,需要搭配consult,设置:

(setq consult-preview-key 'any)
2 个赞

离题。请问一下:图3中的 Neovim 的主题是什么?

这是自己制作的主题, 源码在这里. 想用的话直接复制到 ~/.config/nvim/colors 文件夹下即可

Emmm 根据 consult 的 README Live Previews 章节:

Consult enables previews by default. You can disable them by adjusting the consult-preview-key variable.

预览是默认开启的? 而且 consult-preview-key 默认为 'any, 也就是任何按键都会预览? 但是实际上比如 find files 是没有预览的.

有点搞不懂.

不知道是不是 Doom Emacs 有什么奇怪的设置, Centaur Emacs 对我说的文件查找预览有直接支持吗?

Centaur Emacs 中预览配置为 M-. 快捷键。

执行 M-x find-files:

然后按 M-. 就直接把光标下的文件打开了?:

请问我哪里操作出现问题了?

哦,快捷键绑定冲突了,改成别的吧,等下我提交下

有好几个涉及 M-. 的地方, 不知道是哪个冲突了, 等待你的更新

embark-dwim 覆盖了。

已经更新:目前是延时1秒自动预览。

谢谢, 但是我试了下在 find-files 窗口里按 C-n/C-p 高亮不同的文件并停留几秒, 并没有预览出现. 是我哪里理解错了吗? 在你的电脑上预览效果是怎么样的? 我的 Centaur Emacs 还没有任何配置, 应该不存在什么奇怪问题导致不能预览.

find-file 不支持,C-x brg 等是可以的。

好吧,看了 Emacs 也难免有一些功能比较难实现。准备试试 blink search

你要的功能 blink-search 也无法满足的,在我看来最接近的就是 consult preview。可以自己加命令解决。

文件搜索加预览,eaf-file-manager已经实现了,和楼主第一张效果一模一样,搜索出来左边列表,右边实时预览。

如果rg这种效果,实时预览blink-search叶实现了。

他想 find-file 预览,用别的命令 consult和blink-search 应该都是可以的。