bash/zsh interactive history menu / autocompletion replacement for bash/zsh Ctl+R and Esc+/ to search in history and re-execute/re-edit commands.
$ git clone https://github.com/joknarf/redo
$ source redo/redo
or direct source from github repository:
$ source <(curl -Ls https://raw.githubusercontent.com/joknarf/redo/main/redo)
Then on command line:
- ShiftTab or Esc+/ or CtlR to access history menu
- you can put pattern on command line + ShiftTab or Esc+/ or Ctl+R to filter and access history menu
- in menu enter pattern to filter/re-filter history
- select command line with arrows or enter number and press enter
- you can then edit the command line before execution
key | action |
---|---|
⇩ | select next item |
⇧ | select prev item |
End/⇨ | select last item |
Home/⇦ | select first item |
PgUp/Ctl-F | next page |
PgDn/Ctl-B | previous page |
Esc | exit |
Ctrl+A | use all screen to display menu |
Enter/Tab | put selected on command line |
Tab | apply filter/new filter |
Del/F8 | delete item from history file |
- filter pattern can be applied entering text
- selection can be done entering item number
To delete command from current shell history and $HISTFILE
use redodel
command then chose command and press Del or F8.
Using Del/F8 when using redo bind key (Esc+/ or Ctl+R) will not remove command from current shell history (line editing limitation), but the $HISTFILE
will be purged from the command.
When deleting history in $HISTFILE
using redo bind key, set the following options to ensure the history is not written later in $HISTFILE
by shell.
-
zsh options to set :
setopt appendhistory setopt incappendhistory
-
bash options to set :
shopt -s histappend cmdlist PROMPT_COMMAND='history -a'
- zsh on ubuntu 22 : in vi mode, to have Esc+/ correctly binded, you need to put in
~/.zshenv
:skip_global_compinit=1