Open your ~/.inputrc
. If you don't have this file, see the end for how to create it. Add these lines:
## arrow up
"\e[A":history-search-backward
## arrow down
"\e[B":history-search-forward
Lines starting with #
are comments. I can't remember what is backward and what forward. Experiment with it. Maybe you have to switch backward and forward.
Just re-open possibly open terminal windows for the new behaviour to become effective.
A bit background information:
Bash is using readline to handle the prompt. ~/.inputrc
is the configuration file for readline. Note that this will also take effect in other software using the readline library, for example IPython.
Read the bash manual for more information about readline. There you can also find more history related readline commands.
To get the escape codes for the arrow keys you can do the following:
- Start
cat
in a terminal (just cat
, no further arguments).
- Type keys on keyboard, you will get things like
^[[A
for up arrow and ^[[B
for down arrow.
- Replace
^[
with \e
.
For more information about ^[
and \e
see here: https://unix.stackexchange.com/a/89817/380515
If you don't already have a ~/.inputrc
file, copy the default settings over, or all the other default key bindings will be overridden:
cp /etc/inputrc ~/.inputrc
or begin your ~/.inputrc
file with the following line
$include /etc/inputrc
[1]:
The sequence C-s
is taken from the terminal driver, as you can see from
stty -a | grep '\^S'
To free up the sequence for use by readline, set the stop terminal sequence to some other sequence, as for example
stty stop ^J
or remove it altogether with
stty stop undef
After that C-s
would work in the given terminal.
Set it in ~/.bashrc
to make it work in every terminal.
The M-
sequence means the Alt key, as already noted.
Best Answer
You can use the combination Ctrl+G.
Excerpt of
man readline
: