- bindkey '\e[3~' delete-char
- bindkey '\e[8~' end-of-line
- bindkey '\e[7~' beginning-of-line
-;;
-screen*|linux)
- bindkey '\e[3~' delete-char
- bindkey '\e[4~' end-of-line
- bindkey '\e[1~' beginning-of-line
-;;
-xterm)
- bindkey '\e[3~' delete-char
- bindkey '\e[F' end-of-line
- bindkey '\e[H' beginning-of-line
- bindkey '\eOH' beginning-of-line
- bindkey '\eOF' end-of-line
-;;
-esac
+ case $TERM in
+ rxvt*)
+ del=('\e[3~') home=('\e[7~') end=('\e[8~') ;;
+ screen*|linux|cygwin)
+ del=('\e[3~') home=('\e[1~') end=('\e[4~') ;;
+ cons25)
+ del=('^?') home=('\e[H') end=('\e[F') ;;
+ xterm*)
+ del=('\e[3~')
+ home=('\e[1~' '\e[H' '\e[OH')
+ end=('\e[4~' '\e[F' '\e[OF')
+ ;;
+ esac
+
+ bindkey -e
+ for k in "${del[@]}"; do bindkey "$k" delete-char; done
+ for k in "${home[@]}"; do bindkey "$k" beginning-of-line; done
+ for k in "${end[@]}"; do bindkey "$k" end-of-line; done
+
+ stty stop ''
+ case $KEYMAP in
+ colemak)
+ bindkey '^R' history-incremental-search-forward
+ bindkey '^P' history-incremental-search-backward
+ stty eof '^S' ;;
+ *)
+ stty eof '^D' ;;
+ esac
+}
+reset_keymap
+
+reset() {
+ command reset
+ reset_keymap
+}