Is there any manual to get the list of bash shortcut keys?
The defaults are in man bash
, along with details as to what each command does. See BroSlow's answer if you have changed your key bindings.
Commands for Moving
beginning-of-line (C-a)
Move to the start of the current line.
end-of-line (C-e)
Move to the end of the line.
forward-char (C-f)
Move forward a character.
backward-char (C-b)
Move back a character.
forward-word (M-f)
Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits).
backward-word (M-b)
Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits).
shell-forward-word
Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters.
shell-backward-word
Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters.
clear-screen (C-l)
Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without clearing the screen.
...
reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary. This is an incremental search.
...
unix-line-discard (C-u)
Kill backward from point to the beginning of the line. The killed text is saved on the kill-ring.
...
yank (C-y)
Yank the top of the kill ring into the buffer at point.
EDIT
These commands are all in a contiguous section of the manual, so you can browse it from Commands for Moving
. Alternatively, you can save this entire section to a text file with
man bash | awk '/^ Commands for Moving$/{print_this=1} /^ Programmable Completion$/{print_this=0} print_this==1{sub(/^ /,""); print}' > bash_commands.txt
(N.B. this prints the whole section, including commands with no default keyboard shortcut.)
Explanation of awk code
- On the (only) occurrence of
Commands for Moving
, set the variableprint_this
to 1. - On the (only) occurrence of
Programmable Completion
, which is the following section, set the variable to 0. - If the variable is 1, then get rid of the leading whitespace (three spaces), and print the line.
You can list all shortcuts in your current bash shell by calling the bash builtin bind
with the -P
option.
e.g.
bind -P | grep clear
clear-screen can be found on "\C-l".
To change them, you can do something like
bind '\C-p:clear-screen'
And put it in an init file to make it permanent (note you can only have a key combination bound to one thing at a time, so it will lose any binding it had previously).
The following command gives a nice columnar output showing the use and shortcuts.
bind -P | grep "can be found" | sort | awk '{printf "%-40s", $1} {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'
This gives an output, which looks like
abort "\C-g", "\C-x\C-g", "\e\C-g".
accept-line "\C-j", "\C-m".
backward-char "\C-b", "\eOD", "\e[D".
backward-delete-char "\C-h", "\C-?".
backward-kill-line "\C-x\C-?".
backward-kill-word "\e\C-h", "\e\C-?".
backward-word "\e\e[D", "\e[1;5D", "\e[5D", "\eb".
beginning-of-history "\e<".
beginning-of-line "\C-a", "\eOH", "\e[1~", "\e[H".
call-last-kbd-macro "\C-xe".
capitalize-word "\ec".
character-search-backward "\e\C-]".
character-search "\C-]".
clear-screen "\C-l".
complete "\C-i", "\e\e".
...
Get this output into a text file using following command
bind -P|grep "can be found"|sort | awk '{printf "%-40s", $1} {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}' > ~/shortcuts
The file is created in your $HOME directory.
Explanation
gets all the shortcuts.
bind -P
removes all non-assigned shortcuts
grep "can be found"
sorts the output
sort
prints the first column (i.e. function) and justifies text
awk '{printf "%-40s", $1}
This is part of the previous command. It prints columns 6+ (i.e. shortcuts).
{for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'
Puts the output into a nice text file in home dir named shortcuts
> shortcuts
You can get the idea of how the command works by running the following commands.
bind -P
bind -P | grep "can be found"
bind -P | grep "can be found" | sort