export XDG_CONFIG_HOME="$HOME/.config" export XDG_CACHE_HOME="$HOME/.cache" export XDG_DATA_HOME="$HOME/.local/share" export EDITOR="vim" export VIMINIT="source $XDG_CONFIG_HOME/vim/vimrc" export PAGER="less" export LS_COLORS='di=34:ow=44;37:tw=44;37:st=44;37:ex=31:su=7;31:sg=7;31:ln=33:or=7;33:pi=32:do=32:bd=35:cd=35:so=32:*.bz2=36:*.dmg=36:*.gz=36:*.gpg=36:*.rar=36:*.tar=36:*.tbz2=36:*.tgz=36:*.xz=36:*.zip=36:*.orig=90:*~=90' export GNUPGHOME="$XDG_DATA_HOME/gnupg" LISTMAX=32768 WORDCHARS="*?[];!#~" local grep="" local grep_color="auto" local ls="" local ls_color="auto" local ls_on_cd="yes" local ls_on_init="no" local simple_prompt="no" bindkey -v # history-incremental-search-backward is much more useful than # _history-complete-* bindkey "^R" history-incremental-search-backward # Add a few other emacs bindings for convenience, as it's sometimes quicker to # use those than to switch between modes. bindkey "^A" beginning-of-line bindkey "^E" end-of-line bindkey "^D" delete-char-or-list # backward-kill-word behaves more like vim, whereas vi-backward-kill-word is # the vi behaviour. bindkey "^W" backward-kill-word setopt no_bg_nice setopt no_nomatch setopt extended_glob setopt autocd setopt auto_pushd autoload -U compinit compinit -C # Ignore case on completion zstyle ':completion:*' matcher-list 'm:{A-Z}={a-z} m:{a-z}={A-Z}' __find_command() { which "$1" &>/dev/null && echo "$1" || echo "$2" } if [ -n "$grep" -o -n "$grep_color" ]; then : ${grep:=$(__find_command ggrep grep)} [ -n "$grep_color" -a "$grep_color[1]" != - ] && grep_color="--color=$grep_color" alias grep="$grep $grep_color" fi alias fgrep="grep -F" if [ -n "$ls" -o -n "$ls_color" ]; then : ${ls:=$(__find_command gls ls)} [ -n "$ls_color" -a "$ls_color[1]" != - ] && ls_color="--color=$ls_color" alias ls="$ls $ls_color" fi [ "$ls_on_cd" = yes ] && chpwd() { ls } [ "$ls_on_init" = yes ] && ls case $TERM_PROGRAM in Apple_Terminal) __update_terminal_cwd() { printf '\e]7;%s\a' "file://$HOSTNAME${PWD// /%20}" } ;; *) __update_terminal_cwd() {} ;; esac if [ "$simple_prompt" = yes ]; then set_prompt() { local branch [ -n "$1" ] && branch="%F{black}%B(%b%F{cyan}$1%F{black}%B)%b%f" PS1="%m:%c$branch%B%(!.#.$)%b " PS2="%B>%b " RPS1="%(1j.%F{yellow}%j%f.)%(?..%(1j. .)%F{red}%?%f)" RPS2="%(1_.%F{black}%B(%_%)%b%f.)" } else set_prompt() { local branch [ -n "$1" ] && branch="%F{36}(%F{78}$1%F{36})" PS1="%F{23}%m %F{29}%c$branch%F{36}%(!.#.>)%f " PS2="%B>%b " RPS1="%(1j.%F{yellow}%j%f.)%(?..%(1j. .)%F{red}%?%f)" RPS2="%(1_.%F{black}%B(%_%)%b%f.)" } fi set_prompt __precmd() { __update_terminal_cwd local branch=$(fossil branch current 2>/dev/null) if [ -z "$branch" ]; then branch=$(git symbolic-ref HEAD 2>/dev/null) branch=${branch##refs/heads/} fi set_prompt $branch } case $TERM in aterm|Eterm|rxvt*|uxterm*|xterm*) # Use set_title if you want to change the term title set_title() { # Without this, precmd would override it precmd() { __precmd } print -Pn "\e]0;$@\a" } unset_title() { precmd() { print -Pn "\e]0;%c ยท %m\a" __precmd } } unset_title ;; *) precmd() { __precmd } ;; esac extr() { for i in $@; do case $i in *.7z) 7za x $i ;; *.lha) ofarc -x $i ;; *.tar) ofarc -x $i ;; *.tbz | *.tbz2 | *.tar.bz2) bzcat $i | ofarc -ttar -x - ;; *.tgz | *.tar.gz) ofarc -x $i ;; *.txz | *.tar.xz) xzcat $i | ofarc -ttar -x - ;; *.rar) unrar x $i ;; *.zip) ofarc -x $i ;; # These have to be the last for obvious reasons *.bz2) bunzip2 $i ;; *.gz) ofarc -x $i ;; *.xz) unxz $i ;; *) echo "$i: Unknown file type" false ;; esac done } for ext in 7z lha tar tbz tbz2 tar.bz2 tgz tar.gz txz tar.xz rar zip bz2 gz xz do alias -s "$ext=extr" done [ "$EDITOR" = vim ] && alias vi=vim which gpg2 &>/dev/null && alias gpg=gpg2 make() { case "$PWD" in # pkgsrc needs bmake and does not like MAKEFLAGS including -j. */pkgsrc*) MAKEFLAGS= =$(__find_command bmake make) $@ ;; *) =make $@ ;; esac } alias tmux="tmux -f $XDG_CONFIG_HOME/tmux/tmux.conf" if which fossil &>/dev/null; then alias fsl="fossil" fsld() { fossil diff "$@" | vim -R - } fi # pkgsrc does not like MAKEFLAGS including -j which pkg_chk &>/dev/null && alias pkg_chk="MAKEFLAGS= pkg_chk" which pkg_rolling-replace &>/dev/null && alias pkg_rolling-replace="MAKEFLAGS= pkg_rolling-replace" which url2pkg &>/dev/null && alias url2pkg="MAKEFLAGS= url2pkg" # mpv does not like locales that use , as decimal point. alias mpv="LC_ALL=C mpv" alias gpg-ssh="SSH_AUTH_SOCK=$GNUPGHOME/S.gpg-agent.ssh ssh" alias gpg-ssh-add="SSH_AUTH_SOCK=$GNUPGHOME/S.gpg-agent.ssh ssh-add" alias gpg-sftp="SSH_AUTH_SOCK=$GNUPGHOME/S.gpg-agent.ssh sftp" pwnk() { local clipboard if which pbcopy &>/dev/null; then clipboard=pbcopy elif which xclip &>/dev/null; then clipboard=xclip else echo "No clipboard handler found!" return 1 fi cryptopassphrase $@ | tr -d '\n' | $clipboard } alias pw="pwnk -k ~/.cryptopassphrase.key" alias pws="pwnk -k ~/.cryptopassphrase-server.key" ixio() { curl -F 'f:1=<-' ix.io } 0x0st() { curl -F'file=@-' https://0x0.st } unset fgrep grep grep_color ls ls_color ls_on_cd ls_on_init simple_prompt unset HISTFILE