Skip to content

Instantly share code, notes, and snippets.

@frodera
Forked from pesterhazy/ripgrep-in-emacs.md
Last active December 4, 2018 10:13
Show Gist options
  • Save frodera/e1684fa0bee56167b6bd2b024d60baf3 to your computer and use it in GitHub Desktop.
Save frodera/e1684fa0bee56167b6bd2b024d60baf3 to your computer and use it in GitHub Desktop.
Using ripgrep in Emacs using helm-ag (Spacemacs)

Why

Ripgrep is a fast search tool like grep. It's mostly a drop-in replacement for ag, also know as the Silver Searcher.

helm-ag is a fantastic package for Emacs that allows you to display search results in a buffer. You can also jump to locations of matches. Despite the name, helm-ag works with ripgrep (rg) as well as with ag.

How

  1. Install ripgrep

  2. Make Spacemacs use helm-project-do-ag directly when pressing SPC / without preselecting the symbol under the cursor.

    Type SPC f e d to bring up ~/.spacemacs.

    (defun dotspacemacs/user-config ()
      ;; ....
      (evil-leader/set-key "/" 'spacemacs/helm-project-do-ag))
    
  3. Force ripgrep as search tool

    Add the following to .emacs-custom or wherever you keep emacs custom set variables.

    (custom-set-variables
      ;; ...
      '(helm-ag-base-command "rg --vimgrep --no-heading --smart-case"))
    

Usage

SPC / should allow you to search in the current project.

You can prefix patterns with options

-G*.cljs -w time - search for the word "time" in all .cljs files

-tclojure time - search for "time" in all .{clj,cljs,cljc} files

uno\ due\ tre - search for the string "uno duo tre"

-C5 foo - search for "foo" but show 5 lines of context before and after the match

(?:^|[^\w-])time(?:[^\w-]|$) - search for lisp-word "time", i.e. search for the full word "time" while considering "-" to be a word characer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment