# 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.