背景
在日常工作中,有如下两类高效的检索文件场景:
- 我们想根据
关键字
快速查找到当前目录文件中含相应内容的文件(检索文件内容)。 - 我们能根据
关键字
快速找到到文件名含有该关键字的文件(按文件名查找文件)。
检索文件内容
ripgrep 按关键字检索,参考如下: BurntSushi/ripgrep: ripgrep recursively searches directories for a regex pattern while respecting your gitignore (github.com)
mac下安装ripgrep 直接使用brew brew install ripgrep
windows下安装ripgrep 直接使用winget winget install BurntSushi.ripgrep.MSVC
安装完成ripgrep后,就可以在命令行下检索了,效果如下:
如上图所示,我们找到两个文件有关键字pop-global
。这样查找内容就非常方便了。接下来我们将其配置在emacs
,这样在emacs里也能使用rg进行检索内容:
配置方式:Using ripgrep in Emacs using helm-ag (Spacemacs) (github.com)
其要点是在Emacs中设置 helm-ag-base-command
这个变量。
M-x customize-set-variable helm-ag-base-command
将这个变量的值设置为:rg --vimgrep --no-heading --smart-case
如下:
然后在emacs
执行以下命令可以查找当前项目里的内容,你可以绑定自己的快捷键:
M-x spacemacs/helm-project-do-ag
如下效果图:
按文件名查找文件
fd-find 按文件名进行查找,连接 sharkdp/fd: A simple, fast and user-friendly alternative to 'find' (github.com)
需要先安装fd
mac 下安装 brew install fd
windows下安装 winget install sharkdp.fd
安装完成后,可以进行查找测试,如下:fd "init"
在emacs中配置fd,主要是将 ffip-use-rust-fd
变量设置为true。
设置完成后,可以在emacs里使用M-x find-file-in-project-by-selected
效果如下: