You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

273 lines
6.9 KiB
Plaintext

# {{{ Keybindings
# a function to
# Use ^v to find out the keynames
man-command ()
{
if [ -n "$BUFFER" ]
then
local FirstArg=`echo $BUFFER | awk '{print $1}'`
man $FirstArg
fi
}
sudo-command ()
{
if [ -n "$BUFFER" ]
then
local FirstArg=`echo $BUFFER | awk '{print $1}'`
if [ "$FirstArg" != "sudo" ]
then
BUFFER="sudo $BUFFER"
zle end-of-line
fi
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
}
add-accept-keywords ()
{
if [ -n "$BUFFER" ]
then
BUFFER="ACCEPT_KEYWORDS=\"\" $BUFFER"
CURSOR=17
fi
}
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
zle -N add-accept-keywords
#bindkey -v # vi key bindings
bindkey -e # emacs key bindings
bindkey '^[[2~' overwrite-mode # [Insert]
bindkey '^[[3~' delete-char # [Delete]
bindkey '^[[5~' up-line-or-history # [Page Up]
bindkey '^[[6~' down-line-or-history # [Page Down]
bindkey '^[[1~' beginning-of-line # [Begin]
bindkey '^[[4~' end-of-line # [End]
bindkey '^[[A' history-search-backward # [Up]
bindkey '^[[B' history-search-forward # [Down]
bindkey '^[Oa' history-incremental-search-backward # [Ctrl+Up]
bindkey '^[Ob' history-incremental-search-forward # [Ctrl+Down]
bindkey '^[Oc' move-pointer-to-next-arg
bindkey '^[Od' move-pointer-after-command
bindkey '^Z' which-command
bindkey '^N' man-command
bindkey '^S' sudo-command
bindkey '^Y' add-accept-keywords
bindkey '^U' kill-whole-line
bindkey '^Q' push-input
bindkey '^P' yank
bindkey '^f' forward-word
bindkey '^b' backward-word
# Unbind c-s and c-q
stty -ixon
#}}}
# {{{ aliases and functions
#funktions
# help for aliases
aliashelp()
{
echo '
ALIAS DESCRIPTION
cl goto and list directory
leo search/translate per leo with '$BROWSER'
wikipedia search per wikipedia with '$BROWSER'
disassemble disassemble given files
da Show the diskusage of the file/directory
daL same as above but with symlink-dereferencing
j show the runned (background-)jobs
CM `./configure && make`
CMI `./configure && make && make install`
cl go to $1 and show the contents
ls `ls --color=always`
lh `ls -lh`
ls_sizesorted long self explaining name... thx to the tabcompletion ^^
lad only show dot-directories
lsa only show dot-files
lss only files with setgid/setuid/sticky flag
lsl only symlinks
lsx only executables
lsw world-{readable,writable,executable} files
lsbig display the biggest files
lsd only show directories
lse only show empty directories
lsnew display the newest files
lsold display the oldest files
lssmall display the smallest files
sortfast http://www.commandlinefu.com/commands/view/10313/fastest-sort
'
}
cl() { cd $1 && ls -a } # cd and ls
leo() { ${BROWSER} "http://dict.leo.org/?search=$*" } # gimmie leo results
wikipedia() { ${BROWSER} "http://de.wikipedia.org/wiki/Spezial:Search/${(C)1}" }
disassemble() { gcc -pipe -S -o - -O -g $* | as -aldh -o /dev/null } # self-explaining
regexp() {
pcre_compile $1 && \
pcre_match $2 && echo "regex matches" || echo "regex does not match"
}
sleepuntil() { #TODO
usage="Usage: $0 Stunden [Minuten [Sekunden]]\nBeispiel:\n $0 6\n(schlaeft bis um 6)"
if [ "$1" = "" ]; then echo $usage
else
h="`date '+%H'`"
m="`date '+%M'`"
s="`date '+%S'`"
if [ "$1" = "" ]; then echo $usage; exit 1; fi
if [ "$2" = "" ]; then 2=0; fi
if [ "$3" = "" ]; then 3=0; fi
if [ $h -gt $1 ]; then
echo "24-($1-$h)"
let "hdiff=24-($1-$h)"
else
echo "$h-$1"
let "hdiff=$h-$1"
fi
if [ $m -gt $2 ]; then
echo "60-($m-$2)"
let "mdiff=60-($m-$2)"
else
echo "$m-$2"
let "mdiff=$m-$1"
fi
if [ $s -gt $3 ]; then
echo "60-($s-$3)"
let "sdiff=24-($s-$3)"
else
echo "$s-$3"
let "sdiff=$s-$3"
fi
diff=$[$hdiff*3600+$mdiff*60+$sdiff]
echo "... schlafe fuer ${diff}s (${hdiff}h${mdiff}m${sdiff}s) ..."
sleep 1
fi
}
test-for-ftp-mv ()
{
z=0
orig=$@
dateien=""
ordner=""
goal=""
while [ $# -gt 0 ]
do
let z++
if [ $# -ne 1 ]
then
[ -f "$1" ] && dateien="$dateien\n$1"
[ -d "$1" ] && ordner="$ordner\n$1"
[ -d "$1" -o -f "$1" ] || echo "\"$1\" existiert nicht und wird ignoriert!"
else
goal=$1
fi
shift
done
zmodload -i zsh/pcre
if pcre_compile "^/home/ftp" && pcre_match $goal
then
for o in `echo -e $ordner`
do
sudo mv $o $goal
sudo chmod 555 $goal$o
sudo chown ftp:ftp $goal$o
done
for d in `echo -e $dateien`
do
sudo mv $d $goal
sudo chmod 444 $goal`basename $d`
sudo chown ftp:ftp $goal`basename $d`
done
else
arg=""
for x in `echo -e $ordner $dateien $goal`
do
arg="$arg $x"
done
mv $arg
fi
}
# normal aliases
alias da='du -sch'
alias daL='du -schL'
alias j='jobs -l'
alias CM='./configure && make'
alias CMI='./configure && make && make install'
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 mtr="mtr -t" # a better traceroute (no gtk please)
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
alias sortfast="sort -S$(($(sed '/MemT/!d;s/[^0-9]*//g' /proc/meminfo)/1024-200)) --parallel=$(($(grep -c '^proc' /proc/cpuinfo)*2))"
alias gitpush="hipchat-notify.sh && git push $@"
#alias mv="test-for-ftp-mv";
# TODO!!!
# global aliases
alias -g BG='& exit'
alias -g C='|wc -l'
alias -g G='|grep'
alias -g H='|head'
alias -g Hl=' --help |& less -r'
alias -g L='|less'
alias -g LL='|& less -r'
alias -g M='|most'
alias -g N='&>/dev/null'
alias -g R='| tr A-z N-za-m'
alias -g SL='| sort | less'
alias -g S='| sort'
alias -g T='|tail'
# }}}
# vim: set foldmethod=marker tabstop=8