man-command ( )
{
if [ -n " $BUFFER " ]
then
local FirstArg = ` echo $BUFFER | awk '{print $1}' `
man $FirstArg
fi
}
sudo-command ( )
{
if [ -n " $BUFFER " -a " ${ BUFFER : 0 : 4 } " != "sudo" ]
then
BUFFER = " sudo $BUFFER "
zle end-of-line
fi
}
move-pointer-to-next-arg ( )
{
if [ -n " $BUFFER " ]
then
CURSOR = ` echo | awk '
{ curpos = 5; arg = $BUFFER ; orig = arg;
arg = substr( arg, curpos) ;
if ( substr( arg, 1, 1) = = "-" ) arg = substr( arg, 2) ;
curpos += index( arg, "-" ) ;
print curpos; } ' `
fi
}
move-pointer-after-command ( )
{
if [ -n " $BUFFER " ]
then
local LenOfFirstArg = ` echo $BUFFER | awk '{ print length($1) }' `
CURSOR = $LenOfFirstArg
fi
}
# bmi calculator and it doesn't care if you start width height or width
# eg: `bmi 65 1.8` and `bmi 1.8 65` is the same
bmi ( )
{
local w = $1
local h = $2
if [ [ $w -lt $h ] ]
then
h = $1
w = $2
fi
echo $(( $w / $h / $h ))
}
zle -N man-command # shows the man-page of the written command
zle -N sudo-command # writes "sudo " in front of the buffer
zle -N move-pointer-after-command # moves the pointer between command and first parameter
zle -N move-pointer-to-next-arg
bindkey -e
bindkey '\ew' kill-region
bindkey -s '\el' "ls\n"
bindkey '^r' history-incremental-search-backward
bindkey '^[[1~' beginning-of-line # [Begin]
bindkey '^[[2~' overwrite-mode # [Insert]
bindkey '^[[3~' delete-char # [Delete]
bindkey '^[[4~' end-of-line # [End]
bindkey "^[[5~" up-line-or-history # [Page-Up]
bindkey "^[[6~" down-line-or-history # [Page-Down]
# make search up and down work, so partially type and hit up/down to find relevant stuff
bindkey '^[[A' up-line-or-search
bindkey '^[[B' down-line-or-search
bindkey "^[[H" beginning-of-line
bindkey "^[OH" beginning-of-line
bindkey "^[[F" end-of-line
bindkey "^[OF" end-of-line
bindkey ' ' magic-space # also do history expansion on space
#bindkey "^[[1;5C" forward-word
#bindkey "^[[1;5D" backward-word
#TODO: make keybindings ctrl+right and ctrl+left work
bindkey "^[[OC" move-pointer-to-next-arg
bindkey "^[[OD" move-pointer-after-command
bindkey '^[[Z' reverse-menu-complete
# Make the delete key (or Fn + Delete on the Mac) work instead of outputting a ~
bindkey '^?' backward-delete-char
bindkey "^[[3~" delete-char
bindkey "^[3;5~" delete-char
bindkey "\e[3~" delete-char
bindkey '^N' man-command
bindkey '^S' sudo-command
bindkey '^U' kill-whole-line
bindkey '^Q' push-input
bindkey '^P' yank
bindkey '^f' forward-word
bindkey '^b' backward-word
# some command shortcuts
alias ls = 'ls --color=always'
alias lh = 'ls -lh'
alias ls_sizesorted = 'ls -lSrah'
alias lad = 'ls -d .*(/)' # only show dot-directories
alias lsa = 'ls -a .*(.)' # only show dot-files
alias lss = 'ls -l *(s,S,t)' # only files with setgid/setuid/sticky flag
alias lsl = 'ls -l *(@[1,10])' # only symlinks
alias lsx = 'ls -l *(*[1,10])' # only executables
alias lsw = 'ls -ld *(R,W,X.^ND/)' # world-{readable,writable,executable} files
alias lsbig = "ls -flh *(.OL[1,10])" # display the biggest files
alias lsd = 'ls -d ^.*(/)' # only show directories
alias lse = 'ls -d *(/^F)' # only show empty directories
alias lsnew = "ls -drl *(Dom[1,10])" # display the newest files and directories
alias lsold = "ls -rtlh *(Dom[1,10])" # display the oldest files and directories
alias lssmall = "ls -Srl *(.oL[1,10])" # display the smallest files
alias screensaver = 'clear; for ((;;)); do echo -ne "\033[$((1+RANDOM%LINES));$((1+RANDOM%COLUMNS))H\033[$((RANDOM%2));3$((RANDOM%8))m$((RANDOM%10))"; sleep 0.1 ; done' # credits to lkj@commandlinefu.com
# global aliases – like aliases working _behind_ the command
alias -g _C = '|wc -l'
alias -g _G = '|grep'
alias -g _H = '|head'
alias -g _L = '|less'
alias -g _N = '&>/dev/null'
alias -g _R = '| tr A-z N-za-m'
alias -g _T = '|tail'
#
# Unbind c-s and c-q
stty -ixon
# consider emacs keybindings:
#bindkey -e ## emacs key bindings
#
#bindkey '^[[A' up-line-or-search
#bindkey '^[[B' down-line-or-search
#bindkey '^[^[[C' emacs-forward-word
#bindkey '^[^[[D' emacs-backward-word
#
#bindkey -s '^X^Z' '%-^M'
#bindkey '^[e' expand-cmd-path
#bindkey '^[^I' reverse-menu-complete
#bindkey '^X^N' accept-and-infer-next-history
#bindkey '^W' kill-region
#bindkey '^I' complete-word
## Fix weird sequence that rxvt produces
#bindkey -s '^[[Z' '\t'
#