{"id":13836758,"url":"https://github.com/Wilfred/deadgrep","last_synced_at":"2025-07-10T16:30:47.823Z","repository":{"id":33944141,"uuid":"136675069","full_name":"Wilfred/deadgrep","owner":"Wilfred","description":"fast, friendly searching with ripgrep and Emacs","archived":false,"fork":false,"pushed_at":"2024-04-08T15:37:55.000Z","size":1267,"stargazers_count":698,"open_issues_count":40,"forks_count":46,"subscribers_count":21,"default_branch":"master","last_synced_at":"2024-04-15T01:15:46.787Z","etag":null,"topics":["emacs","ripgrep"],"latest_commit_sha":null,"homepage":null,"language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Wilfred.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-08T23:36:12.000Z","updated_at":"2024-05-30T01:27:18.916Z","dependencies_parsed_at":"2023-01-15T03:31:11.536Z","dependency_job_id":"16ada19e-72b9-41d7-99e5-f2e9e71ae2a1","html_url":"https://github.com/Wilfred/deadgrep","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wilfred%2Fdeadgrep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wilfred%2Fdeadgrep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wilfred%2Fdeadgrep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wilfred%2Fdeadgrep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Wilfred","download_url":"https://codeload.github.com/Wilfred/deadgrep/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225647739,"owners_count":17502126,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["emacs","ripgrep"],"created_at":"2024-08-04T15:00:53.894Z","updated_at":"2024-11-20T23:31:40.867Z","avatar_url":"https://github.com/Wilfred.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"readme":"# Deadgrep: use ripgrep from Emacs ☠️\n\nDeadgrep is the fast, beautiful text search that your Emacs\ndeserves.\n\n[![Coverage Status](https://coveralls.io/repos/github/Wilfred/deadgrep/badge.svg?branch=master)](https://coveralls.io/github/Wilfred/deadgrep?branch=master) [![MELPA](https://melpa.org/packages/deadgrep-badge.svg)](https://melpa.org/#/deadgrep)\n\n![screenshot](docs/deadgrep_screenshot.png)\n\n\u003c!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again --\u003e\n**Table of Contents**\n\n- [Usage](#usage)\n    - [Installation](#installation)\n    - [Keybindings](#keybindings)\n    - [Additional interactive commands](#additional-interactive-commands)\n    - [Minibuffer](#minibuffer)\n    - [Easy Debugging](#easy-debugging)\n- [Features](#features)\n    - [Super Fast](#super-fast)\n    - [Context Aware](#context-aware)\n    - [Easy Filtering](#easy-filtering)\n    - [Polish](#polish)\n- [Beta Features](#beta-features)\n- [Alternative Projects](#alternative-projects)\n- [Why the name?](#why-the-name)\n\n\u003c!-- markdown-toc end --\u003e\n\n## Usage\n\n### Installation\n\n1. Install [ripgrep](https://github.com/BurntSushi/ripgrep). You need\n   version 0.8 or later.\n\n2. Install deadgrep from MELPA (do `M-x package-install`\n\u003ckbd\u003eRET\u003c/kbd\u003e `deadgrep` within Emacs 25.1 or later),\nor copy it into your `~/.emacs.d`.\n\n3. (Optional) add deadgrep to a convenient shortcut. I like F5.\n\n``` emacs-lisp\n(global-set-key (kbd \"\u003cf5\u003e\") #'deadgrep)\n```\n\n### Keybindings\n\nNavigating results:\n\n| Key                               | Action                                         |\n| ---                               | ---                                            |\n| \u003ckbd\u003eRET\u003c/kbd\u003e                    | Visit the result, file or push button at point |\n| \u003ckbd\u003eo\u003c/kbd\u003e                      | Visit the result in another window             |\n| \u003ckbd\u003en\u003c/kbd\u003e and \u003ckbd\u003ep\u003c/kbd\u003e     | Move between search hits                       |\n| \u003ckbd\u003eM-n\u003c/kbd\u003e and \u003ckbd\u003eM-p\u003c/kbd\u003e | Move between file headers                      |\n\nThe commands `deadgrep-forward` and `deadgrep-backward` are also\navailable to move between buttons as well as search hits.\n\nStarting/stopping a search:\n\n| Key                           | Action                                                                  |\n| ---                           | ---                                                                     |\n| \u003ckbd\u003eS\u003c/kbd\u003e                  | Change the search term                                                  |\n| \u003ckbd\u003eT\u003c/kbd\u003e                  | Cycle through available search types: string, words, regexp             |\n| \u003ckbd\u003eC\u003c/kbd\u003e                  | Cycle through case sensitivity types: smart, sensitive, ignore          |\n| \u003ckbd\u003eF\u003c/kbd\u003e                  | Cycle through file modes: all, type, glob                               |\n| \u003ckbd\u003eI\u003c/kbd\u003e                  | Switch to incremental search, re-running on every keystroke             |\n| \u003ckbd\u003eD\u003c/kbd\u003e                  | Change the search directory                                             |\n| \u003ckbd\u003e^\u003c/kbd\u003e                  | Re-run the search in the parent directory                               |\n| \u003ckbd\u003eg\u003c/kbd\u003e                  | Re-run the search                                                       |\n| \u003ckbd\u003eTAB\u003c/kbd\u003e                | Expand/collapse results for a file                                      |\n| \u003ckbd\u003eC-c\u003c/kbd\u003e \u003ckbd\u003eC-k\u003c/kbd\u003e | Stop a running search                                                   |\n| \u003ckbd\u003eC-u\u003c/kbd\u003e                | A prefix argument prevents search commands from starting automatically. |\n\n### Additional interactive commands\n\n| Name                        | Action                                                         |\n| ---                         | ---                                                            |\n| `imenu`                     | Move between files in a results buffer.                        |\n| `deadgrep-kill-all-buffers` | Kill all open deadgrep buffers.                                |\n| `deadgrep-debug`            | In a results buffer, view the `rg` command, output and environment used. |\n\n### Minibuffer\n\nYou use the minibuffer to enter a new search term.\n\nYou can also reuse a previous search term with \u003ckbd\u003eM-p\u003c/kbd\u003e in the\nminibuffer. To edit the default search term, use \u003ckbd\u003eM-n\u003c/kbd\u003e.\n\n### Easy Debugging\n\nThe easiest way to debug search results is to review the actual `rg` command executed.\n\nFortunately, the `deadgrep-debug` function makes it easy:\n\n- Move to the deadgrep results buffer.\n- Type `M-x deadgrep-debug`.\n- Strike `enter`, and the debug buffer will appear.\n- Move to the deadgrep debug buffer.\n\nStudy the results to review the `rg` command string and other debugging information to assist you.\n\n## Features\n\n### Super Fast\n\nDeadgrep uses ripgrep for extremely fast text searches.\n\nIf you change your search settings, deadgrep will immediately re-run\nyour search.\n\n### Context Aware\n\nDeadgrep works hard to minimise your keystrokes.\n\n**Search term**: If the region is active, deadgrep uses that.\n\n**Search directory**: If your current file is in a VCS repository,\ndeadgrep uses that for your search directory.\n\n**Regexp and case sensitivity options**: Deadgrep re-uses whatever\nsettings you used in your last search.\n\n**Globbing and file types**: Deadgrep suggests file types and globbing\noptions that match the file you started the search from.\n\n**Host**: If you're editing a remote file with Tramp, deadgrep will\nsearch the remote machine. This requires `rg` to be installed on that\nmachine.\n\n### Easy Filtering\n\nDidn't get the results you wanted? It's easy to change the search\nterm, search type, or search directory, directly from the results\nbuffer. Just push the relevant button.\n\n![screenshot](docs/deadgrep_filters.png)\n\n### Polish\n\nDeadgrep uses spinners to give you feedback on whether your search has\nfinished.\n\n![screenshot](docs/deadgrep_spinner.png)\n\nIt highlights regexp syntax according to the syntax accepted by `rg`.\n\n![screenshot](docs/deadgrep_highlight.png)\n\nWhen navigating to a line that matched, the relevant part of the line\nis temporarily highlighted.\n\n![screenshot](docs/deadgrep_highlight_relevant.png)\n\nYou can collapse and expand files with `TAB`.\n\n![screenshot](docs/deadgrep_collapsed.png)\n\nDeadgrep handles minified files robustly.\n\n![screenshot](docs/deadgrep_truncated.png)\n\nYou can always jump to exactly the position that point is on, even\nwhen searching files that contain tab characters. You can also\nnavigate to the file itself from the file headings.\n\n## Beta Features\n\nYou can now edit files directly from results buffers with `M-x\ndeadgrep-edit-mode`.\n\nIt is currently in beta. Alternatively, package [wgrep](https://github.com/mhayashi1120/Emacs-wgrep)\nadded support for editing deadgrep buffers in April 2023 via [wgrep-deadgrep](https://melpa.org/#/wgrep-deadgrep).\n(One feature unlocked that way is, e.g., the ability to delete a line in edit mode via `C-d`)\n\n## Alternative Projects\n\nI believe that deadgrep is the best tool for doing Emacs text\nsearches, but there are some other great tools out there. See\n[ALTERNATIVES](docs/ALTERNATIVES.md) for a discussion.\n\n## Why the name?\n\nThe name \"deadgrep\" is a pun on \"R.I.P. grep\", and ripgrep.el was\nalready taken.\n\nR.I.P wasn't actually the intention of the name \"ripgrep\" (see [their\nFAQ](https://github.com/BurntSushi/ripgrep/blob/master/FAQ.md#what-does-the-rip-in-ripgrep-mean)),\nbut deadgrep is easy to remember and type.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWilfred%2Fdeadgrep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWilfred%2Fdeadgrep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWilfred%2Fdeadgrep/lists"}