# do not bell on tab-completion
set bell-style off
set meta-flag on
set input-meta on
set convert-meta on
set output-meta on
# Alt + Backspace delete by words
# \C-\b does not give you the behaviour you want
# as backspace the key is sent as ^h or ^127 ^\177
# ie it already uses Ctrl+something so Ctrl+Ctrl+something is not valid
"\M-\b": backward-delete-word
# Ctrl + K deletes the current line
"\C-k": kill-whole-line
# Alt + K deletes the current line
"\M-k": kill-whole-line
# for linux console and RH/Debian xterm
# these codes simulate numeric keypad layout
# found on some old machines when there were less keys
# Home
"\e[1~": beginning-of-line
# End
"\e[4~": end-of-line
# Page Up
"\e[5~": beginning-of-history
# Page Down
"\e[6~": end-of-history
# this makes DEL key a universal deleter
# it deletes under the cursor if there is a char there
# at ^ it deletes like a normal delete key
# at $ it deletes like a backspace key
"\e[3~": forward-backward-delete-char
# these control how the arrows work
# arrow keys are problematic due to erratic placement
# net effect of this is that arrows work as normal
# but alt arrow or control arrow moves by word
# this is control arrow
"\eOC": forward-word
"\eOD": backward-word
# this is alt arrow
"\e\e[C": forward-word
"\e\e[D": backward-word
# misc miscompatibility hacks!
# for rxvt
"\e[8~": end-of-line
# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
"\eOH": beginning-of-line
"\eOF": end-of-line
# for freebsd console
"\e[H": beginning-of-line
"\e[F": end-of-line
####
[root@devel3 root]# cat key
#!/usr/bin/perl
use Term::ReadKey;
my $RAW = $ARGV[0] ? 1 : 0;
ReadMode 4 unless $RAW;
sleep 1 while (not defined ($key = ReadKey(-1)))
printf "Get key '%s' %d \%o\n", $key, ord($key), ord($key);
ReadMode 0 unless $RAW;
[root@devel3 root]#
####
^[
this must be replaced with:
\e
in the .inputrc file. So if you run ./key and say press Ctrl+Left_Arrow you will get this:
$ ./key raw
^[OC
Anyway now we know Ctrl+Left_Arrow is ^[OC
so in your .inputrc you put:
"\eOC": forward-word
note s/\^[/\\e/g Then do a bind -f .inputrc and it just works.