From db44862a23b83f904d843f27b310813ef9edd65a Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Thu, 6 Sep 2012 11:22:02 +0200 Subject: [Keys] Better managment of vi-mode. --- user:hugues/GusBindings.zsh | 282 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 282 insertions(+) create mode 100644 user:hugues/GusBindings.zsh (limited to 'user:hugues/GusBindings.zsh') diff --git a/user:hugues/GusBindings.zsh b/user:hugues/GusBindings.zsh new file mode 100644 index 0000000..8bdfbb0 --- /dev/null +++ b/user:hugues/GusBindings.zsh @@ -0,0 +1,282 @@ +## +## Part of configuration files for Zsh 4 +## by Hugues Hiegel +## +## NO WARRANTY PROVIDED, USE AT YOUR OWN RISKS +## +## You are encouraged to use, modify, and redistribute +## these files with or without this notice. +## + +## Key bindings +# +# Lancez un chtit bindkey dans votre zsh pour voir... +# + +#set_keymap() +#{ +# main=$1 +# bindkey -A main $main +#} +## Vi-mode +#set_keymap viins + +bindkey '^[[3~' delete-char # delete +bindkey '^[[2~' overwrite-mode # insert +bindkey '^[[A' up-line-or-history # up +bindkey '^[[B' down-line-or-history # down +bindkey '^[^[[A' history-search-backward # META-up +bindkey '^[^[[B' history-search-forward # META-down +bindkey '^[^[[C' forward-word # ESC right +bindkey '^[^[[D' backward-word # ESC left +bindkey '^[^[[3~' kill-region # ESC del + +test $TERM = 'rxvt' -o $TERM = 'xterm' -o $TERM = 'aterm' && +{ + bindkey '^[[1~' beginning-of-line # home + bindkey '^[[4~' end-of-line # end-of-line + bindkey '^[Oc' forward-word # CTRL right + bindkey '^[Od' backward-word # CTRL left + bindkey '^[[3$' vi-set-buffer # SHIFT del + bindkey '^[Oa' history-search-backward # CTRL UP + bindkey '^[Ob' history-search-forward # CTRL DOWN + bindkey '^[OH' beginning-of-line # home + bindkey '^[OF' end-of-line # end-of-line +} + +# +# Sanity +# +#bindkey '^X#' set-mark-command +bindkey '^A' beginning-of-line +bindkey '^B' backward-char +bindkey '^D' delete-char-or-list +bindkey '^E' end-of-line +bindkey '^F' forward-char +bindkey '^G' send-break +bindkey '^H' backward-delete-char +bindkey '^I' expand-or-complete +bindkey '^J' accept-line # '\n' is considered as ^J +bindkey '^K' kill-line +bindkey '^L' clear-screen +bindkey '^M' accept-line +bindkey '^N' down-line-or-history +bindkey '^O' accept-line-and-down-history +bindkey '^P' up-line-or-history +bindkey '^Q' push-line +bindkey '^R' history-incremental-search-backward +bindkey '^S' history-incremental-search-forward +bindkey '^T' transpose-chars +bindkey '^U' backward-kill-line +bindkey '^V' quoted-insert +bindkey '^W' backward-kill-word +bindkey '^X^B' vi-match-bracket +bindkey '^X^F' vi-find-next-char +bindkey '^X^J' vi-join +bindkey '^X^K' kill-buffer +bindkey '^X^N' infer-next-history +bindkey '^X^O' overwrite-mode +bindkey '^X^R' _read_comp +bindkey '^X^U' undo +bindkey '^X^V' vi-cmd-mode +#bindkey '^X^X' exchange-point-and-mark +bindkey '^X*' expand-word +bindkey '^X=' what-cursor-position +bindkey '^X?' _complete_debug +bindkey '^XC' _correct_filename +bindkey '^XG' list-expand +bindkey '^Xa' _expand_alias +bindkey '^Xc' _correct_word +bindkey '^Xd' _list_expansions +bindkey '^Xe' _expand_word +bindkey '^Xg' list-expand +bindkey '^Xh' _complete_help +bindkey '^Xm' _most_recent_file +bindkey '^Xn' _next_tags +bindkey '^Xr' history-incremental-search-backward +bindkey '^Xs' history-incremental-search-forward +bindkey '^Xt' _complete_tag +bindkey '^Xu' undo +bindkey '^X~' _bash_list-choices +bindkey '^Y' yank +bindkey '^[^D' list-choices +bindkey '^[^G' send-break +bindkey '^[^H' backward-kill-word +bindkey '^[^I' self-insert-unmeta +bindkey '^[^J' self-insert-unmeta +bindkey '^[^L' clear-screen +bindkey '^[^M' self-insert-unmeta +bindkey '^[^[[3~' kill-region +bindkey '^[^[[A' history-search-backward +bindkey '^[^[[B' history-search-forward +bindkey '^[^[[C' forward-word +bindkey '^[^[[D' backward-word +bindkey '^[^_' copy-prev-word +bindkey '^[ ' magic-space +bindkey '^[!' expand-history +bindkey "^['" set-mark-command +bindkey '^[$' spell-word +bindkey '^["' exchange-point-and-mark +bindkey '^[,' _history-complete-newer +bindkey '^[-' neg-argument +bindkey '^[.' insert-last-word +bindkey '^[/' _history-complete-older +bindkey '^[0' digit-argument +bindkey '^[1' digit-argument +bindkey '^[2' digit-argument +bindkey '^[3' digit-argument +bindkey '^[4' digit-argument +bindkey '^[5' digit-argument +bindkey '^[6' digit-argument +bindkey '^[7' digit-argument +bindkey '^[8' digit-argument +bindkey '^[9' digit-argument +bindkey '^[<' beginning-of-buffer-or-history +bindkey '^[>' end-of-buffer-or-history +bindkey '^[?' which-command +bindkey '^[A' accept-and-hold +bindkey '^[B' backward-word +bindkey '^[C' capitalize-word +bindkey '^[D' kill-word +bindkey '^[F' forward-word +bindkey '^[G' get-line +bindkey '^[H' run-help +bindkey '^[L' down-case-word +bindkey '^[N' history-search-forward +bindkey '^[OA' up-line-or-history +bindkey '^[OB' down-line-or-history +bindkey '^[OC' forward-char +bindkey '^[OD' backward-char +bindkey '^[P' history-search-backward +bindkey '^[Q' push-line +bindkey '^[S' spell-word +bindkey '^[T' transpose-words +bindkey '^[U' up-case-word +bindkey '^[W' copy-region-as-kill +bindkey '^[[1~' beginning-of-line +bindkey '^[[2~' overwrite-mode +bindkey '^[[3~' delete-char +bindkey '^[[4~' end-of-line +bindkey '^[[5~' history-beginning-search-backward-end +bindkey '^[[6~' history-beginning-search-forward-end +bindkey '^[[A' up-line-or-history +bindkey '^[[B' down-line-or-history +bindkey '^[[C' forward-char +bindkey '^[[D' backward-char +bindkey '^[_' insert-last-word +bindkey '^[a' accept-and-hold +bindkey '^[b' backward-word +bindkey '^[c' capitalize-word +bindkey '^[d' kill-word +bindkey '^[f' forward-word +bindkey '^[g' get-line +bindkey '^[h' run-help +bindkey '^[l' down-case-word +bindkey '^[n' history-search-forward +bindkey '^[p' history-search-backward +bindkey '^[q' push-line +bindkey '^[s' spell-word +bindkey '^[t' transpose-words +bindkey '^[u' up-case-word +bindkey '^[w' copy-region-as-kill +bindkey '^[x' execute-named-cmd +bindkey '^[y' yank-pop +bindkey '^[z' execute-last-named-cmd +bindkey '^[|' vi-goto-column +bindkey '^[~' _bash_complete-word +bindkey '^[^?' backward-kill-word +bindkey '^\^[[A' up-history +bindkey '^\^[[B' down-history +bindkey '^\^[[C' forward-char +bindkey '^\^[[D' backward-char +bindkey '^_' undo +bindkey ' '-'~' self-insert +bindkey '^?' backward-delete-char +bindkey '\M-^@'-'\M-^?' self-insert + +# +# + +for keymap in viins vicmd emacs +do + bindkey -M $keymap '^[r' _rehash + + if ( __cmd_exists when ) + then + bindkey -M $keymap -s '^[w' '^[Q when\n' + fi + + if ( __cmd_exists todo ) + then + bindkey -M $keymap -s '^[t' '^[Q todo\n' + bindkey -M $keymap -s '^[T' '^[Q todo all -c\n' + fi + + bindkey -M $keymap -s '^[c' '^[Q ./configure\n' + bindkey -M $keymap -s '^[©' '^[Q !?configure\n' + + bindkey -M $keymap -s '^[m' '^[Q make\n' + bindkey -M $keymap -s '^[M' '^[Q make\n' + + bindkey -M $keymap -s '^[l' '^[Q l\n' + + bindkey -M $keymap -s '^[ ' '\\ ' + + bindkey -M $keymap -s '^[g' '^[Q git st .\n' + bindkey -M $keymap -s '^[G' '^[Q git fetchall\n' + + bindkey -M $keymap -s '^[S' '^[Q sudo !!' + + bindkey -M $keymap -s '^[X' '^[Q up_up ; exec zsh -l\n' + + bindkey -M $keymap -s '^[^[OA' 'up-line-or-history' + bindkey -M $keymap -s '^[^[OB' 'down-line-or-history' + bindkey -M $keymap -s '^[^[OC' 'forward-word' + bindkey -M $keymap -s '^[^[OD' 'backward-word' + + bindkey -M $keymap '^[q' push-input + bindkey -M $keymap '^[Q' push-input + + bindkey -M $keymap -s '^[R' '^[Q up_up ; sc blue ; __redefine_prompt\n^[xreset-prompt\n' + bindkey -M $keymap -s '^[B' '^[Q __clear $(tput lines)\n' +done + +# redefines push-line for vicmd +bindkey -M vicmd -s '^[q' 'i^[q' +bindkey -M vicmd -s '^[Q' 'i^[Q' + +# Sets vicmd-mode vim-compliant +bindkey -M vicmd 'u' 'undo' +bindkey -M vicmd '^R' 'redo' +bindkey -M vicmd '^[j' 'history-search-forward' +bindkey -M viins '^[j' 'history-search-forward' +bindkey -M vicmd '^[k' 'history-search-backward' +bindkey -M viins '^[k' 'history-search-backward' + + +menuselect_vi-mode() +{ + # Sets menuselect vim-compliant + bindkey -M menuselect 'j' 'down-line-or-history' + bindkey -M menuselect 'k' 'up-line-or-history' + bindkey -M menuselect 'h' 'backward-char' + bindkey -M menuselect 'l' 'forward-char' +} + +# Enters vi-cmd mode at each prompt +#zle-line-init() { zle vi-cmd-mode } +#zle -N zle-line-init + +# Show the current keymap used +#zle-keymap-select() +#{ +# if [ "$KEYMAP" != "main" ] +# then +# __term_title " [$KEYMAP]" +# else +# __term_title +# fi +#} + +#zle -N zle-keymap-select +#zle -N zle-line-init zle-keymap-select ## CRASHES UPON MULTILINE COMMAND... -- cgit v1.2.3