igrepper

View the Project on GitHub igoyak/igrepper

igrepper - The interactive grepper

Filter and explore text with instant feedback. The regex is re-evaluated at every keypress. Also useful for quickly developing and testing regular expressions.

Installation

Either:

  1. Download binary
    To install without setting up a rust environment, grab the igrepper binary from the latest release: https://github.com/igoyak/igrepper/releases
    Then make it executable with chmod and put it in your PATH.

  2. Install using cargo
    cargo install igrepper

  3. Build and run from source code
    cargo run

Dependencies

Ubuntu: apt-get install xsel for clipboard support

Usage

Recommended .bashrc additions:

alias i='igrepper'
iman() {
  man "$1" | igrepper --context 3
}

Read input from pipe:

dmesg | i

Read input from file:

i /etc/fstab

Create a grep command using ctrl-g:

See context around matches:

Reload the file as it changes (similar to tail -f):

i -f somefile.log

Commands:

Edit the current regex by typing.

Movement:

Command Action
Up/Down/Left/Right/PageUp/PageDown Scroll
ctrl-u/ctrl-d Half-page scroll

Searching:

Command Action
ctrl-n/ctrl-j/Enter Accept current regex, start a sub-search
ctrl-p Revert sub-search
ctrl-i Toggle case sensitivity
ctrl-v Toggle inverted
ctrl-r/ctrl-t Decrease/Increase context-lines

Exporting:

Command Action
ctrl-e Copy current match to clipboard
ctrl-g Copy equivalent grep command to clipboard
F1 Pipe current match to the configured external editor
(Inside vim) F1 Pipe current buffer to igrepper (add map <F1> :silent :w !igrepper<CR>:q!<CR> to your .vimrc)

Configuration

External editor

Set the environment variable IGREPPER_EDITOR to a command and arguments, separated by whitespace, to customize which editor is used when pressing F1. The command must support reading from STDIN.

Example .bashrc configuration:

export IGREPPER_EDITOR="vim -R -" # vim in read-only mode (default)
export IGREPPER_EDITOR="code -" # vscode
export IGREPPER_EDITOR="nano -v -" # nano in read-only mode

Supported platforms

Tested on Ubuntu 20.04

Known issues

Dev dependencies

Ubuntu: apt-get install libncurses-dev

Release build

cargo build --release cargo publish