Finding Files With RipGrep

[James Dyer] : Sep 21, 2022 : 289 words
emacs linux 🏷️ ripgrep emacs 2022

Now I am appreciating the power and simplicity of ripgrep and have it available on all my systems I was hunting around emacs to see the best way to leverage this tool for quick file searching.

Working on a code base that is familiar to me is fine when locating files within emacs as of course I know where to go and when I am not I would typically open up a terminal and use find

As we know, find can be a little picky and fiddly to use and it is not a straightforward process to define the files and folders I am not interested in when returning an efficient search.

Now I have defined an .ignore file to define which files and directories I am not interested in for a regular ripgrep I was wondering if I could also use this somehow to search for files within a project hierarchy and from within emacs.

I have heard good things about projectile and in combination with a completion system it can bring up a searchable file list. This seems like a good solution but unfortunately I have never really found it fits in with my simple workflow, I have always failed to set it up properly and generally I don’t require the ability to switch between projects.

After running list-packages and literally searching for ripgrep, I came across a package called find-file-rg, which leverages the rg --files command to list all files in the directory defined but excluding from the ripgrep defined .ignore file.

Fed into Ivy it means a list of potential files can be displayed and located using its completion system and all I need to define is the following:

(global-set-key [f4] 'find-file-rg)

and hey presto!