3 releases

0.0.3 Aug 11, 2022
0.0.2 Aug 11, 2022
0.0.1 Aug 10, 2022

#7 in #interactively

MIT license

83KB
2K SLoC

gredit - Grep and Edit

Runs grep (ripgrep's library) in the background, allows interactively pick its results and open selected match in text editor of choice (vim by default).

This is a fork of igrep, with an added context viewer to see the context of your matches. Also, gredit does not exit when you exit your editor.

gredit supports macOS and Linux. Reportedly it works on Windows as well.

Usage

gredit [OPTIONS] <PATTERN|--type-list> [PATH]

Args

<PATTERN>    Regular expression used for searching.
<PATH>       File or directory to search. Directories are searched recursively.
             If not specified, searching starts from current directory.

Options

-., --hidden                  Search hidden files and directories. By default, hidden files and
                              directories are skipped.
    --editor <EDITOR>         Text editor used to open selected match [possible values: vim,
                              neovim, nvim, nano, code, vscode, emacs, emacsclient]
-g, --glob <GLOB>             Include files and directories for searching that match the given glob.
                              Multiple globs may be provided.
-h, --help                    Print help information
-i, --ignore-case             Searches case insensitively.
-S, --smart-case              Searches case insensitively if the pattern is all lowercase.
                              Search case sensitively otherwise.
-t, --type <TYPE_MATCHING>    Only search files matching TYPE.
                              Multiple types may be provided.
-T, --type-not <TYPE_NOT>     Do not search files matching TYPE-NOT.
                              Multiple types-not may be provided.
    --theme <THEME>           UI color theme [default: dark] [possible values: light, dark]
    --type-list               Show all supported file types and their corresponding globs.
-V, --version                 Print version information.

NOTE: gredit respects ripgrep's configuration file if RIPGREP_CONFIG_PATH environment variable is set and reads all supported options from it.

Keybindings

Key Action
q, Esc Quit
Down, j Select next match
Up,k Select previous match
Right, l, PageDown Select match in next file
Left, h, PageUp Select match in previous file
gg, Home Jump to the first match
Shift-g, End Jump to the last match
Enter Open current file
dd, Delete Filter out selected match
dw Filter out all matches in current file
F5 Re-run search

Specifying text editor

gredit supports Vim, Neovim, nano, VS Code (stable and insiders), Emacs and EmacsClient. To specify the editor, use one of the following (listed in order of their precedence):

  • --editor option,
  • $GREDIT_EDITOR variable,
  • $EDITOR variable.

Higher priority option overrides lower one. If neither of these options is set, vim is used as a default.

Installation

Prebuilt binaries

gredit binaries can be downloaded from GitHub.

Build from source

Build and install from source using Rust toolchain by running: cargo install gredit.

Dependencies

~16–25MB
~423K SLoC