X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=041bae378dbbb60fd8aaf30345ea232cee732e49;hb=edf2d10d01302fbaa24a31e577ec94f4f819bceb;hp=2e7e65a4ef064a5ee7b0ef07d4a381b3a073e3ec;hpb=1c9a325d3905252c08adab1f36c964a7f48f091f;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index 2e7e65a..041bae3 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -563,9 +563,43 @@ bindkey -e # use vi style: # bindkey -v +## beginning-of-line OR beginning-of-buffer OR beginning of history +## by: Bart Schaefer , Bernhard Tittelbach +beginning-or-end-of-somewhere() { + local hno=$HISTNO + if [[ ( "${LBUFFER[-1]}" == $'\n' && "${WIDGET}" == beginning-of* ) || \ + ( "${RBUFFER[1]}" == $'\n' && "${WIDGET}" == end-of* ) ]]; then + zle .${WIDGET:s/somewhere/buffer-or-history/} "$@" + else + zle .${WIDGET:s/somewhere/line-hist/} "$@" + if (( HISTNO != hno )); then + zle .${WIDGET:s/somewhere/buffer-or-history/} "$@" + fi + fi +} +zle -N beginning-of-somewhere beginning-or-end-of-somewhere +zle -N end-of-somewhere beginning-or-end-of-somewhere + + #if [[ "$TERM" == screen ]] ; then -bindkey '\e[1~' beginning-of-line # home -bindkey '\e[4~' end-of-line # end + +## with HOME/END, move to beginning/end of line (on multiline) on first keypress +## to beginning/end of buffer on second keypress +## and to beginning/end of history on (at most) the third keypress +# terminator & non-debian xterm +bindkey '\eOH' beginning-of-somewhere # home +bindkey '\eOF' end-of-somewhere # end +# freebsd console +bindkey '\e[H' beginning-of-somewhere # home +bindkey '\e[F' end-of-somewhere # end +# xterm,gnome-terminal,quake,etc +bindkey '^[[1~' beginning-of-somewhere # home +bindkey '^[[4~' end-of-somewhere # end +# if terminal type is set to 'rxvt': +bindkey '\e[7~' beginning-of-somewhere # home +bindkey '\e[8~' end-of-somewhere # end +#fi + bindkey '\e[A' up-line-or-search # cursor up bindkey '\e[B' down-line-or-search # - @@ -574,14 +608,22 @@ bindkey '\e[B' down-line-or-search # - #k# Delete current word bindkey "3~" delete-word +## use Ctrl-left-arrow and Ctrl-right-arrow for jumping to word-beginnings on the CL +bindkey "\e[5C" forward-word +bindkey "\e[5D" backward-word +bindkey "\e[1;5C" forward-word +bindkey "\e[1;5D" backward-word +## the same for alt-left-arrow and alt-right-arrow +bindkey '^[[1;3C' forward-word +bindkey '^[[1;3D' backward-word + bindkey '^xp' history-beginning-search-backward bindkey '^xP' history-beginning-search-forward +bindkey "\e[5~" history-beginning-search-backward #PageUp +bindkey "\e[6~" history-beginning-search-forward #PageDown # bindkey -s '^L' "|less\n" # ctrl-L pipes to less # bindkey -s '^B' " &\n" # ctrl-B runs it in the background -# if terminal type is set to 'rxvt': -bindkey '\e[7~' beginning-of-line # home -bindkey '\e[8~' end-of-line # end -#fi + # insert unicode character # usage example: 'ctrl-x i' 00A7 'ctrl-x i' will give you an ยง @@ -3777,6 +3819,7 @@ refunc() { autoload $func done } +compdef _functions refunc # a small check to see which DIR is located on which server/partition. # stolen and modified from Sven's zshrc.forall