1
0
mirror of https://github.com/dcarrillo/prezto.git synced 2025-07-01 19:49:25 +00:00

Compare commits

...

2 Commits

Author SHA1 Message Date
c2d6b378a6 Cleanup 2014-10-07 19:34:24 -04:00
7823bb9985 Bind Ctrl+Left to emacs-backward-word (and Right to forward)
Binds some additional sequences to emacs-backward-word and
emacs-forward-word. The problem is that terminfo doesn't know about
Ctrl+ArrowKeys, so one has to resort to using raw sequences as used
in the wild. The sequences were copied from Debian's /etc/inputrc
(readline configuration), so they should be fairly portable.
It works in xterm and rxvt terminals and doesn't work on
TERM=linux (virtual console) as Ctrl+Arrows send the same sequence
as Arrows alone.

http://zshwiki.org/home/zle/bindkeys
http://sources.debian.net/src/readline6/6.2+dfsg-0.1/debian/inputrc?hl=44#L44
2014-10-07 00:41:36 -04:00

View File

@ -57,6 +57,17 @@ key_info=(
'BackTab' "$terminfo[kcbt]"
)
# Escape sequences from Debian's inputrc.
key_info+=(
'ControlLeft' '\e[1;5D \e[5D \e\e[D \eOd'
'ControlRight' '\e[1;5C \e[5C \e\e[C \eOc'
)
# if [[ "$TERM" == rxvt* ]]; then
# key_info[ControlLeft]+=' \eOd'
# key_info[ControlRight]+=' \eOc'
# fi
# Set empty $key_info values to an invalid UTF-8 sequence to induce silent
# bindkey failure.
for key in "${(k)key_info[@]}"; do
@ -206,10 +217,10 @@ bindkey -d
# Emacs Key Bindings
#
for key ("$key_info[Escape]"{B,b}) bindkey -M emacs "$key" emacs-backward-word
for key ("$key_info[Escape]"{F,f}) bindkey -M emacs "$key" emacs-forward-word
bindkey -M emacs "$key_info[Escape]$key_info[Left]" emacs-backward-word
bindkey -M emacs "$key_info[Escape]$key_info[Right]" emacs-forward-word
for key in "$key_info[Escape]"{B,b} "${(s: :)key_info[ControlLeft]}"
bindkey -M emacs "$key" emacs-backward-word
for key in "$key_info[Escape]"{F,f} "${(s: :)key_info[ControlRight]}"
bindkey -M emacs "$key" emacs-forward-word
# Kill to the beginning of the line.
for key in "$key_info[Escape]"{K,k}