summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Pritz <f-p@gmx.at>2009-02-15 21:22:41 +0100
committerFlorian Pritz <f-p@gmx.at>2009-02-15 21:22:41 +0100
commit26864d392ff087a49e51943c45b17db2a608c72c (patch)
treea77ae1122b1f53709f75d02ab525201f4276e6ce
parent0f0b43b67c0405c8f254f52627b7da950a6e5136 (diff)
downloaddotfiles-26864d392ff087a49e51943c45b17db2a608c72c.tar.gz
dotfiles-26864d392ff087a49e51943c45b17db2a608c72c.tar.xz
added
-rw-r--r--.zshrc530
1 files changed, 9 insertions, 521 deletions
diff --git a/.zshrc b/.zshrc
index a8638a0..61c54e3 100644
--- a/.zshrc
+++ b/.zshrc
@@ -1,524 +1,12 @@
#----------------------------------------------------
-# File: ~/.zshrc
-# Version: 0.3.10
-# Date: 2009-01-27
-# Author: Florian "Bluewind" Pritz <f-p@gmx.at>
+# File: ~/.zshrc
+# Version: 0.4.0
+# Date: 2009-02-14
+# Author: Florian "Bluewind" Pritz <f-p@gmx.at>
#----------------------------------------------------
-#--------------------
-# History
-#--------------------
-export HISTFILE=~/.zsh/histfile
-# for some odd reason allocating RAM to save the histfile takes ages..
-export HISTSIZE=4000
-export SAVEHIST=4000
-
-#--------------------
-# Keybindings
-#--------------------
-bindkey -e
-bindkey '\e[1~' beginning-of-line
-bindkey '\e[4~' end-of-line
-bindkey '\e[3~' delete-char
-bindkey '\e[2~' overwrite-mode
-bindkey "^[[7~" beginning-of-line # Pos1
-bindkey "^[[8~" end-of-line # End
-# HOWTO make your own:
-# bindkey '<crtl+alt+key>' <action> (do this in a shell)
-# for some actions run `bindkey`
-
-#--------------------
-# Completion stuff
-#--------------------
-autoload -Uz compinit
-compinit
-
-# correct 7etc/foo to /etc/foo
-# if anyone has a working solution for /etc7foo please contact me
-function _7slash {
- if [[ $words[CURRENT] = 7(#b)(*)(#e) ]]
- then
- compadd -U -X 'Correct leading 7 to /' -f /$match[1]
- fi
-}
-
-# complete my little rc function (archlinux startscripts)
-function _rc () {
- case $CURRENT in
- 2) compadd $(find /etc/rc.d/ -type f -executable -printf '%f ');;
- 3) compadd start stop restart reload;;
- esac
-}
-
-# easier way to use sshfs ;)
-function _ssh-mount () { compadd $(cat ${HOME}/bin/ssh-mount.sh | egrep "Servers:.*" | sed "s#echo \-e \"\${green}Servers\:\$NC##g; s#\"\;##g; s#,##g") }
-
-zstyle :compinstall filename '$HOME/.zshrc'
-
-# cache results because yaourt is slow
-zstyle ':completion:*' use-cache on
-zstyle ':completion:*' cache-path $HOME/.zsh/cache
-zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
-zstyle ':completion:*' completer _complete _match _approximate _7slash
-zstyle ':completion:*:match:*' original only
-
-# add completition to rc function
-compdef _rc rc
-compdef _ssh-mount ssh-mount.sh
-
-# allow more mistypes if longer command
-zstyle -e ':completion:*:approximate:*' \
- max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3))numeric)'
-
-# ignore completion for commands we don't have
-zstyle ':completion:*:functions' ignored-patterns '_*'
-
-# show menu when tabbing
-zstyle ':completion:*' menu yes select
-zstyle ':completion:*' file-sort time
-
-# remove / after dirnames
-# e.g. ls foo/ -> ls foo
-zstyle ':completion:*' squeeze-slashes true
-
-# if in foo/bar don't show bar when cd ../<TAB>
-zstyle ':completion:*:cd:*' ignore-parents parent pwd
-
-# ignore case when completing
-zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
-
-# make some stuff look better
-zstyle ':completion:*:descriptions' format $'%{\e[0;31m%}completing %B%d%b%{\e[0m%}'
-zstyle ':completion:*:warnings' format $'%{\e[0;31m%}No matches for:%{\e[0m%} %d'
-
-#--------------------
-# Other ZSH options
-#--------------------
-autoload colors
-colors
-# .. -> cd ../
-setopt autocd
-
-setopt correct_all
-
-# cd /etc/**/foo/blub searches ;)
-setopt extendedglob
-
-# push cds to directory stack
-setopt auto_pushd
-
-# don't push something twice
-setopt pushd_ignore_dups
-
-# don't kill jobs when exiting shell
-setopt no_hup
-
-# show us when some command didn't exit with 0
-setopt print_exit_value
-
-# makepkg -g > PKGBUILD
-# zsh: file exists: PKGBUILD
-#
-# work saved ;)
-setopt no_clobber
-
-setopt APPEND_HISTORY
-setopt SHARE_HISTORY
-setopt EXTENDED_HISTORY
-setopt HIST_REDUCE_BLANKS
-setopt HIST_IGNORE_SPACE
-setopt nohistverify
-
-#-----------------------
-# Variables
-#-----------------------
-#export CDPATH=.:$HOME
-export OOO_FORCE_DESKTOP=gnome
-export PATH=${PATH}:${HOME}/misc/scripts:${HOME}/bin
-export EDITOR=vim
-export PAGER=vimpager
-#export LESSCHARSET="UTF-8"
-#export LESSOPEN='|/usr/bin/lesspipe.sh %s 2>&-'
-#export LESS='-i -c -N -w -g -M -R -P%t?f%f \
-#:stdin .?pb%pb\%:?lbLine %lb:?bbByte %bb:-...'
-
-#--------------------
-# Colors
-#--------------------
-#use these in functions/shell scripts
-export red='\e[0;31m'
-export RED='\e[1;31m'
-export green='\e[0;32m'
-export GREEN='\e[1;32m'
-export blue='\e[0;34m'
-export BLUE='\e[1;34m'
-export purple='\e[0;35m'
-export PURPLE='\e[1;35m'
-export cyan='\e[0;36m'
-export CYAN='\e[1;36m'
-export NC='\e[0m'
-
-# these are for use in PROMPT
-fg_green=$'%{\e[0;32m%}'
-fg_blue=$'%{\e[0;34m%}'
-fg_cyan=$'%{\e[0;36m%}'
-fg_red=$'%{\e[0;31m%}'
-fg_brown=$'%{\e[0;33m%}'
-fg_purple=$'%{\e[0;35m%}'
-fg_light_gray=$'%{\e[0;37m%}'
-fg_dark_gray=$'%{\e[1;30m%}'
-fg_light_blue=$'%{\e[1;34m%}'
-fg_light_green=$'%{\e[1;32m%}'
-fg_light_cyan=$'%{\e[1;36m%}'
-fg_light_red=$'%{\e[1;31m%}'
-fg_light_purple=$'%{\e[1;35m%}'
-fg_no_colour=$'%{\e[0m%}'
-fg_white=$'%{\e[1;37m%}'
-fg_black=$'%{\e[0;30m%}'
-
-# colors in framebuffer!
-if [ "$TERM" = "linux" ]; then
- ${HOME}/bin/parse_xdefaults.sh
- clear #for background artifacting
-fi
-
-# some better colors for ls
-eval "`dircolors -b`"
-
-#--------------------
-# Terminal title
-#--------------------
-# also found somewhere
-prompt_eof_setup() {
- # preexec() is run after you press enter on your command but before the command is run.
- preexec() {
- # define screen/terminal title with the current command (http://aperiodic.net/phil/prompt/)
- case $TERM in
- rxvt-unicode*)
- printf '\33]2;%s\007' $1
- ;;
- screen*)
- local CMD=${1[(wr)^(*=*|sudo|ssh|exec|-*)]}
- printf '\ek%s\e\\' $CMD;;
- esac
- }
-}
-
-prompt_eof_setup "$@"
-
-#--------------------
-# Prompt
-#--------------------
-#PS1="[${fg_cyan}%*${fg_no_colour}] - ${fg_light_red}$USERNAME${fg_no_colour} ${fg_light_blue}%~${fg_no_colour} > "
-PS1="${fg_light_red}$USERNAME${fg_no_colour}@${fg_light_green}%m${fg_no_colour} - ${fg_light_blue}%~${fg_no_colour}
-[${fg_cyan}%*${fg_no_colour}] > "
-
-## Spelling prompt
-SPROMPT='zsh: correct '%R' to '%r' ? ([Y]es/[N]o/[E]dit/[A]bort) '
-
-#--------------------
-# Aliases
-#--------------------
-# better ask before we loose data
-alias rm='rm -Iv'
-alias cp='cp -iv'
-alias mv='mv -iv'
-
-# I don't like bytes
-alias dum='du -kh --max-depth=2'
-alias du='du -kh'
-alias dus='du -skh'
-alias df='df -kTh'
-
-# function to make ls look nice is below
-alias ll='ls'
-alias la='ls -a'
-
-alias newpkgb=' cp $HOME/misc/aur/PKGBUILD.proto PKGBUILD'
-
-# well I got used to that name ;)
-alias aurball='makepkg --source -f'
-alias pkgbuild='makepkg -fc && aurball'
-alias pushpkg='cp *.pkg.tar.gz *.src.tar.gz /mnt/mistral/srv/drop'
-
-alias sudo="sudo " #Sudo wont recognize aliases without this
-alias s='sudo'
-alias x='x -v'
-alias u='upload.sh'
-alias mtr='mtr -t'
-alias wcl='wc -l'
-alias mdstat='cat /proc/mdstat'
-
-alias pager='${PAGER}'
-alias more='${PAGER}'
-alias less='${PAGER}'
-alias c='${PAGER}'
-alias v='vim'
-# sudo needs support for aliases!
-alias sc='sudo ${PAGER}'
-alias sv='sudo vim'
-
-alias ncmpc='ncmpc -c'
-alias youtube='youtube-dl -b '
-
-# updating commands can be long...
-alias yup='yaourt -Syu --aur'
-alias yu='yaourt -Syu'
-
-# can't they make it use sudo on it's own like yaourt?
-alias p='sudo powerpill'
-alias pa='sudo powerpill -Syu'
-alias py='sudo powerpill -S'
-alias pacman='sudo pacman-color'
-
-alias su='su -'
-
-alias y='yaourt'
-alias ys='yaourt -S'
-alias ysi='yaourt -Si'
-alias yr='yaourt -Rs'
-alias yrn='yaourt -Rns'
-alias yqo='yaourt -Qo'
-
-# too long to remember
-alias asciidoc_full='asciidoc -a icons -a toc'
-
-# global aliases work EVERYWHERE
-# e.g. dmesg tt
-# show last 20 lines of dmesg
-alias -g gg='| grep --color'
-alias -g eg='| egrep --color'
-alias -g tt='| tail -n 20'
-# I always hit y instead of | ...
-alias -g vv='|'
-
-# who doesn't need pastebins?
-alias -g sp="2>&1 | curl -F 'sprunge=<-' http://sprunge.us"
-alias -g pp="2>&1 | wgetpaste -X "
-
-# e.g. "blub.txt" opens the file instead of showing command not found
-alias -s txt=mousepad
-alias -s jpg=gpicview
-alias -s png=gpicview
-
-# source stuff that depends on the machine
-source ~/.private_stuff.zsh
-
-#--------------------
-# Functions
-#--------------------
-
-# always /etc/rc.d/blub is a bit too much work ;)
-rc () {
- sudo /etc/rc.d/$1 $2
-}
-
-# usefull if you have more machines and want to easily update the config here
-update_zshrc () {
- wget http://flo.server-speed.net/stuff/dotfiles/zshrc -O ${HOME}/.zshrc
-}
-
-# easily make backups
-bk() {
- cp -b ${1} ${1}_`date +%Y-%m-%d_%T`
-}
-
-# idea see below
-cd() {
- builtin cd $@ &&
- ls
-}
-
-# idea by Gigamo http://bbs.archlinux.org/viewtopic.php?pid=478094#p478094
-ls () {
- /bin/ls -rlhbtF --color=auto $@ &&
- echo "${PURPLE}Files: ${BLUE}$(/bin/ls -l $@ | grep -v "^[l|d|total]" | wc -l) ${GREEN}--- ${PURPLE}Directories: ${BLUE}$(/bin/ls -l $@ | grep "^d" | wc -l)${NC}"
-}
-
-# jump between directories
-# Copyright 2005 Nikolai Weibull <nikolai@bitwi.se>
-# notice: option AUTO_PUSHD has to be set
-d(){
- emulate -L zsh
- autoload -U colors
- local color=$fg_bold[blue]
- integer i=0
- dirs -p | while read dir; do
- local num="${$(printf "%-4d " $i)/ /.}"
- printf " %s $color%s$reset_color\n" $num $dir
- (( i++ ))
- done
- integer dir=-1
- read -r 'dir?Jump to directory: ' || return
- (( dir == -1 )) && return
- if (( dir < 0 || dir >= i )); then
- echo d: no such directory stack entry: $dir
- return 1
- fi
- cd ~$dir
-}
-
-# from the grml zshrc iirc
-hglob() {
- echo -e "
- / directories
- . plain files
- @ symbolic links
- = sockets
- p named pipes (FIFOs)
- * executable plain files (0100)
- % device files (character or block special)
- %b block special files
- %c character special files
- r owner-readable files (0400)
- w owner-writable files (0200)
- x owner-executable files (0100)
- A group-readable files (0040)
- I group-writable files (0020)
- E group-executable files (0010)
- R world-readable files (0004)
- W world-writable files (0002)
- X world-executable files (0001)
- s setuid files (04000)
- S setgid files (02000)
- t files with the sticky bit (01000)
- print *(m-1) # Dateien, die vor bis zu einem Tag modifiziert wurden.
- print *(a1) # Dateien, auf die vor einem Tag zugegriffen wurde.
- print *(@) # Nur Links
- print *(Lk+50) # Dateien die ueber 50 Kilobytes grosz sind
- print *(Lk-50) # Dateien die kleiner als 50 Kilobytes sind
- print **/*.c # Alle *.c - Dateien unterhalb von \$PWD
- print **/*.c~file.c # Alle *.c - Dateien, aber nicht 'file.c'
- print (foo|bar).* # Alle Dateien mit 'foo' und / oder 'bar' am Anfang
- print *~*.* # Nur Dateien ohne '.' in Namen
- chmod 644 *(.^x) # make all non-executable files publically readable
- print -l *(.c|.h) # Nur Dateien mit dem Suffix '.c' und / oder '.h'
- print **/*(g:users:) # Alle Dateien/Verzeichnisse der Gruppe >users<
- echo /proc/*/cwd(:h:t:s/self//) # Analog zu >ps ax | awk '{print $1}'<"
-}
-
-# let vim highlight any file for us and save it as html
-2html() {
- vim -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 > /dev/null 2> /dev/null
-}
-
-# download any package's PKGBUILD and go into that dir
-yd (){
- if [ -n "$1" ]; then
- mkdir -p $1
- builtin cd $1
- yaourt -G $1
- else
- echo "Sorry, I need at least a name..."
- fi
-}
-
-# some script to make this damn agent work easier
-source ${HOME}/bin/gpg-agent.sh
-
-# yeah I know you shouldn't use it...
-google(){
- firefox "http://www.google.com/search?&num=100&q=$*" &
- disown firefox
-}
-
-# swaps 2 files
-function swap()
-{
- if [ "$1" = "" ] || [ "$2" = "" ] || [ "$1" = "-h" ]; then
- echo -e "${blue}Usage:$NC swap <file> <file>";
- echo -e "Swaps files";
- return 1
- fi
- if [ -f $1 ] && [ -f $2 ]; then
- local TMPFILE=tmp.$$
- mv "$1" $TMPFILE
- mv "$2" "$1"
- mv $TMPFILE "$2"
- else
- echo -e "${RED}Error:$NC One or more files don't exist"
- return 1
- fi
-}
-
-# get your internal and external IPs
-# also found somewhere on the net
-function my_ip()
-{
- MY_IP=$(/sbin/ifconfig eth0 | awk '/inet/ { print $2 } ' | \
- sed -e s/addr://)
- MY_ISP=$(curl www.wieistmeineip.de | awk '(/[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]/) {print}' | awk 'gsub(/[>||<]/," ")' | awk '{print $3}')
-}
-
-function ii()
-{
- echo -e "\nUser ${RED}"${USER:-"N/A"}"$NC on "${RED}${HOST:-"N/A"}"$NC"
- echo -e "\n${RED}Additionnal information:$NC " ; uname -a
- echo -e "\n${RED}Users logged on:$NC " ; w -h
- echo -e "\n${RED}Current date:$NC " ; date
- echo -e "\n${RED}Machine stats:$NC " ; uptime
- echo -e "\n${RED}Memory stats:$NC " ; free
- my_ip 2>&- ;
- echo -e "\n${RED}Local IP Address:$NC" ; echo ${MY_IP:-"N/A"}
- echo -e "\n${RED}ISP Address:$NC" ; echo ${MY_ISP:-"N/A"}
- echo
-}
-
-# short info to display when opening a new shell
-function short_ii()
-{
- echo -e "\nUser ${RED}"${USER:-"N/A"}"$NC on "${RED}${HOST:-"N/A"}"$NC"
- echo -e "\n${RED}Machine stats:$NC " ; uptime
- echo
-}
-
-function repeat()
-{
- if [ "$1" = "" ] || [ "$2" = "" ] || [ "$1" = "-h" ]; then
- echo -e "${blue}Usage:$NC repeat <number> <command>";
- echo -e "Repeats a command";
- return 1
- fi
- local i max
- max=$1; shift;
- for ((i=1; i <= max ; i++)); do
- eval "$@";
- done
-}
-
-# actually it converts any mp4 or flv to mp3...
-youtube2mp3 () {
- for file in "$@"
- do
- if [ -f ${file} ] ; then
- title=$(echo ${file} | sed 's/\(.*\)\..*/\1/')
- case $(file -bi ${file}) in
- video/mp4)
- faad "${file}" &&
- lame "${title}.wav" "${title}.mp3" &&
- rm "${title}.wav"
- ;;
- video/x-flv)
- ffmpeg -i "${file}" -vn -acodec copy "${title}.mp3"
- ;;
- *)
- echo -e "${RED}Error:$NC No rule how to convert \"${file}\""
- ;;
- esac
- else
- echo -e "${RED}Error:$NC \"${file}\" doesn't exist"
- fi
- done
-}
-
-#--------------------
-# Greetings
-#--------------------
-cat /etc/motd
-echo -e "${CYAN}Welcome to ZSH ${RED}${ZSH_VERSION}$NC"
-short_ii
-# don't want to read nearly the same every time I open a new shell
-if [ -x /usr/bin/fortune ]; then
- /usr/bin/fortune -s
-fi
-echo
+# Makes this file smaller ;)
+for file in ${HOME}/.zsh/rc/**/*
+do
+ . "$file"
+done