From c72234d6072ff46534b23b3388042db64a3e00af Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sun, 27 Sep 2020 21:47:05 +0100 Subject: (Emacs)~ripgrep -> ripgrep + grep +bindings for the in-built grep systems, for compatibility --- Emacs/.config/emacs/config.org | 45 +++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) (limited to 'Emacs') diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org index f90bcd7..f550101 100644 --- a/Emacs/.config/emacs/config.org +++ b/Emacs/.config/emacs/config.org @@ -935,16 +935,47 @@ for exiting insert state. Otherwise, I don't really need it. (key-chord-define evil-insert-state-map "jk" #'evil-normal-state) (key-chord-mode +1)) #+end_src -** Ripgrep -The ripgrep package provides utilities to grep projects and files for -strings via the rg tool. Though [[*Ivy][ivy]] comes with =counsel-rg= using it -makes me dependent on the ivy framework, and this configuration is -intentionally built to be modular and switchable. +** (Rip)grep +*** Grep Preamble +Grep is a historical artefact. It is a searching utility that allows +one to search files for certain regex patterns. The fact that there +have been so many attempts to replace grep (with some success) only +goes to show how important a tool it is. + +Ripgrep is a grep-like utility written in Rust. It subsumes not only +the ability to search a given file but also to search multiple files +within a directory (which is usually only found by composing the +program find with grep to search multiple files). Being incredibly +fast through its regex optimisations, it also uses ignore files such +as =.gitignore= to remove files from its searches. + +Grep has default Emacs utilities that use a =compilation= style buffer +to search a variety of differing data sets. =grep= searches files, +=rgrep= searches in a directory using the =find= binary and =zgrep= +searches archives. This is a great solution for most environments as +most of them will have grep and find installed. Even when you =ssh= +into a remote machine, they're likely to have these tools. + +The ripgrep package provides utilities to ripgrep projects and files +for strings via the rg binary. Though [[*Ivy][ivy]] comes with =counsel-rg= +using it makes me dependent on the ivy framework, and this +configuration is intentionally built to be modular and switchable. Of +course, this requires installing the rg binary which is available in +most common repositories nowadays. In terms of general speed, this is +better. +*** Grep +#+begin_src emacs-lisp +(use-package grep + :straight nil + :general + (leader + "sd" #'rgrep)) +#+end_src +*** rg #+begin_src emacs-lisp (use-package rg - :after evil :general - (leader "r" #'rg) + (leader "sr" #'rg) (:keymaps 'rg-mode-map "]]" #'rg-next-file "[[" #'rg-prev-file -- cgit v1.2.3-13-gbd6f