新手请教spacemacs的counsel-locate问题

系统:macOS 10.12 emacs版本:25.2.1

我调用counsel-locate(SPC f L)命令查找文件,无论我输入什么它都是Nothing found。我查看了一下counsel-locate这个函数,它说明里说会调用系统的locate命令,然后我在系统里装了GNU findutils这个库,并在spacemacs里启用了osx这个layer,但是还是一点用都没有。请教大神,这个问题如何解决

brew install coreutils

基本可以确定是这个问题的解决。

BSD 的工具经常和 GNU 工具的参数有区别,所以要装这个东西。

今天Google了一下,在Mac上运行locate需要依靠/var/db/locate.database这个文件,生成这个文件需要运行 sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist 我试了一下这个方法就OK了

这个库并没有locate这个命令,但我也试了安装,没什么用

macOS 下可以用 mdfind,好像和 Spotlight 的数据来源相同,我的印象中它的数据库是即时更新的,不像 locate 那样定期更新。

mdfind也是可以,但要用的话应该要自己修改spacemacs配置吧。 对于我来说,刚接触emacs和spacemacs,暂时还没能力改配置

在 macOS 下使用 locate 体验不太好,毕竟不是亲生的。

mdfind(spotlight) 和 locate 都开启的话,感觉有点浪费系统资源。不过还是看各人需求,locate 基于文件名的全局索引。而 mdfind 可以同时索引内容和文件名,还可以限定搜索路径。

我偶尔用 locate 来搜索"系统文件"($HOME之外的),所以不常驻内存,半年更新一次 locate.database 都没关系。mdfind 用来查找 $HOME 底下的文件,这个需要实时更新。

Locate生成的那个db文件我的系统就17mb,感觉应该还好…

可以看看有没有 counsel-mdfindcounsel-spotlight 之类的。

mdfind / Soptlight 已经包含了 locate 的功能,但我的印象中,前者的搜索词(Query)的语法比较复杂,似乎也缺少文档,Apple 给几个例子1就算完了。而且似乎还无视隐藏目录,比如用 init.el 是找不到我的 Emacs 配置的。除了打开应用,我没发现 Spotlight 对我有什么用。

1 https://support.apple.com/en-us/HT204014