Files
dotfiles/zsh/zshrc
2014-12-07 01:00:12 +01:00

331 lines
6.9 KiB
Bash

[[ -z "$PS1" ]] && return
### SHELL OPTIONS
setopt EXTENDED_HISTORY
setopt HIST_EXPIRE_DUPS_FIRST
setopt HIST_VERIFY
setopt INC_APPEND_HISTORY
setopt SHARE_HISTORY
setopt AUTO_CD
setopt APPEND_HISTORY
setopt HIST_IGNORE_DUPS
setopt NOHIST_IGNORE_ALL_DUPS
setopt HIST_IGNORE_SPACE
setopt CORRECT
setopt RM_STAR_SILENT
setopt BG_NICE
setopt CHECK_JOBS
setopt HUP
setopt LONG_LIST_JOBS
# emacs-like keybindings
bindkey -e
autoload -U promptinit
promptinit
autoload -U colors
colors
autoload -U compinit
compinit
zstyle ':completion:*' menu select
setopt completealiases
autoload -U edit-command-line
zle -N edit-command-line
bindkey '^xe' edit-command-line
bindkey '^x^e' edit-command-line
#[[ -n "${key[PageUp]}" ]] && bindkey "${key[PageUp]}" history-beginning-search-backward
#[[ -n "${key[PageDown]}" ]] && bindkey "${key[PageDown]}" history-beginning-search-forward
#DIRSTACKFILE="$HOME/.cache/zsh/dirs"
#if [[ -f $DIRSTACKFILE ]] && [[ $#dirstack -eq 0 ]]; then
# dirstack=( ${(f)"$(< $DIRSTACKFILE)"} )
# [[ -d $dirstack[1] ]] && cd $dirstack[1]
#fi
#chpwd() {
# print -l $PWD ${(u)dirstack} >$DIRSTACKFILE
#}
#
#DIRSTACKSIZE=20
#
#setopt autopushd pushdsilent pushdtohome
#
### Remove duplicate entries
#setopt pushdignoredups
#
### This reverts the +/- operators.
#setopt pushdminus
#source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
HISTSIZE=10000
SAVEHIST=10000
HISTFILE="$HOME/.zsh_history"
man() {
env LESS_TERMCAP_mb=$'\E[01;31m' \
LESS_TERMCAP_md=$'\E[01;38;5;74m' \
LESS_TERMCAP_me=$'\E[0m' \
LESS_TERMCAP_se=$'\E[0m' \
LESS_TERMCAP_so=$'\E[38;5;246m' \
LESS_TERMCAP_ue=$'\E[0m' \
LESS_TERMCAP_us=$'\E[04;38;5;146m' \
man "$@"
}
### BOOKMARKS
bm() {
case "$1" in
dev)
cd "$HOME/development/projects"
;;
dot)
cd "$HOME/dotfiles"
;;
*)
echo "unknown target"
;;
esac
}
[[ $TERM == "urxvt" ]] && export TERM="rxvt-unicode"
[[ $TERM == "screen" ]] && export TERM="screen-256color"
### ALIASES
alias su="su -"
#LS_HIDE="*.py[co]"
# --dereference-command-line
alias ls="ls --group-directories-first --classify --color=auto" #--hide=\"$LS_HIDE\""
alias ll='ls -AlFh'
alias la='ls -A'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias rm='rm -v'
alias cp='cp -v'
alias mv='mv -v'
alias ln='ln -v'
alias du='du -h'
alias df='df -h'
alias root='sudo -sE'
alias b='cd $OLDPWD'
alias cs="cryptsetup"
alias le_haxxor_1='clear && dmesg | pv -qL $[10 + (RANDOM % 10)]'
alias le_haxxor_2='clear && hexdump -C /dev/urandom | pv -qlL 2'
alias YOLO="pacman -Syu --force"
alias such="git"
alias very="git"
alias much="git"
alias wow="git status"
alias v="vim"
alias g="git"
# rebase the current branch onto WTF ARE YOU DOING YOU ARE DRUNNK TO GO BED
##alias rebase="git rebase -i $(git branch --contains HEAD | grep -v '\*.*' | head -1)"
### FUNCTIONS
slideshow() {
delay=$1
[[ -z "$delay" ]] && { echo "wrong usage" ; return 1 ; }
shift
[[ -z "$@" ]] && { echo "wrong usage" ; return 1 ; }
feh --auto-zoom \
--randomize \
--recursive \
--scale-down \
--image-bg black \
--draw-filename \
--slideshow-delay=$delay \
"$@"
}
cd() {
builtin cd "$@" && ls
}
mount() {
if [[ $# == 0 ]] ; then
command mount | column -t
else
command mount "$@"
fi
}
ff() {
find . -type f -iname "*"$*"*" ;
}
ffcs() {
find . -type f -name "*"$*"*" ;
}
extr()
{
if [[ -f "$1" ]] ; then
case "$1" in
*.tar.bz2 ) tar xvjf "$1" ;;
*.tar.gz ) tar xvzf "$1" ;;
*.tar.xz ) tar xvJf "$1" ;;
*.bz2 ) bunzip2 "$1" ;;
*.rar ) unrar x "$1" ;;
*.gz ) gunzip "$1" ;;
*.tar ) tar xvf "$1" ;;
*.tbz2 ) tar xvjf "$1" ;;
*.tgz ) tar xvzf "$1" ;;
*.zip ) unzip "$1" ;;
*.Z ) uncompress "$1" ;;
*.7z ) 7z x "$1" ;;
*)
echo "$1 cannot be extracted via $0"
;;
esac
else
echo "$1 is not a valid file"
fi
}
ruler() {
for s in '....^....|' '1234567890'; do
w=${#s}
str=$(for (( i=1; $i<=$(( ($COLUMNS + $w) / $w )) ; i=$i+1 )); do echo -n $s; done )
str=$(echo $str | cut -c -$COLUMNS)
echo $str
done
}
if ! (ssh-add -l | grep -q 'id_rsa') ; then
ssh-add
fi
addext() {
[[ -z "$1" ]] || [[ -z "$2" ]] && { echo "Usage: $0 <file> <extension>" ; return }
mv "$1" "$1$2"
}
ckwww() {
ping -c 3 www.google.com
}
topcmds() {
history | awk '{print $2}' | awk 'BEGIN {FS="|"}{print $1}' | sort | uniq -c | sort -nr | head
}
fnottype() {
find . -maxdepth 1 ! -type $1
}
http() {
curl http://httpcode.info/$1
}
bak() {
[[ -e "$1" ]] && cp -av "$1" "$1.bak"
}
fstab() {
# yeah
expand /etc/fstab | grep -v '^#' | grep -P '^.+$' | tr -s ' ' | tr ' ' '|' | cat <(grep -P '<.+>' /etc/fstab | cut -f 2- -d ' ' | sed 's/>[^<]*</>|</g') - | column -ts '|'
}
rmext() {
[[ -e "$1" ]] && mv -i "$1" "${1%.*}"
}
serve() {
python3 -m http.server 8800
}
manpdf() {
[[ -z "$1" ]] && { echo >&2 "$(man)" ; exit 1 ; }
man -t "$1" | ps2pdf - - | zathura -
}
myip4() {
curl "http://ipv4.icanhazip.com"
}
myip6() {
curl "http://ipv6.icanhazip.com" || echo "no ip6"
}
alias myip="myip4"
alias clip="xclip -selection clipboard"
alias clipo="xclip -out -selection clipboard"
alias tmux="tmux -2"
alias tm="tmux"
alias tml="tmux list-sessions"
alias tma="tmux attach-session"
alias tmc="tmux switch-client -t"
#echo $(date +%T) >> $HOME/tmux-debug.log
#[[ $- != *i* ]] && return
#[[ -z "$TMUX" ]] && exec tmux -2
alias note="zim --plugin quicknote --notebook ~/wiki/zim/notes --page ":quicknotes" --append true"
alias spm="sudo pacman"s
alias chmod="chmod -c"
alias chown="chown -c"
alias rgrep="grep -r"
autoload -Uz vcs_info
zstyle ':vcs_info:*' enable git hg
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:git*' formats "%{${fg[cyan]}%}[%{${fg[green]}%}%s%{${fg[cyan]}%}][%{${fg[blue]}%}%r/%S%%{${fg[cyan]}%}][%{${fg[blue]}%}%b%{${fg[yellow]}%}%m%u%c%{${fg[cyan]}%}]%{$reset_color%}"
setprompt() {
setopt prompt_subst
if [[ -n "$SSH_CLIENT" ]]; then
SSHINFO="[ssh] "
else
SSHINFO=""
fi
# if git status ; then
# GITINFO=" <git repo>"
# else
# GITINFO=""
# fi
PROMPT="%{$fg[white]%}┌─ %{$fg[green]%}%n@%M%{$fg[white]%} ─ %{$fg[cyan]%}%*%{$fg[white]%} ─ %{%B$fg[yellow]%}%~${vcs_info_msg_0_}%{%b%}
%{$fg[white]%}└─ %B${PINFO}%#%b "
RPROMPT=""
}
setprompt
gensshport() {
echo $(( $(od -v -An -N4 -tu4 < /dev/urandom) % (2**16-2**10) + 2**10 ))
}