1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #########################
## kopri's ##
## .zshrc ##
#########################
export SHELL='/bin/zsh'
export EDITOR='vim'
export VIEW='lynx'
export PAGER='vimpager'
export GPGKEY=369465C5
#Make sure to use UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export COLORTERM="YES"
#XDG Base Dir Specs
export XDG_CONFIG_HOME="$HOME/etc"
export XDG_CACHE_HOME="$HOME/etc/cache"
export XDG_DATA_HOME="$HOME/var"
# Manual dir jumping
export MARKPATH=$HOME/.marks
# Path
export PATH=/home/kopri/scripts:/home/kopri/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/local/games:/usr/games
# Source config files
for r in $HOME/etc/zsh/*.zsh; do
if [[ $DEBUG > 0 ]]; then
echo "zsh: sourcing $r"
fi
source $r
done
# Source plugins
for r in $HOME/etc/zsh/plugins/*.zsh; do
if [[ $DEBUG > 0 ]]; then
echo "zsh: sourcing $r"
fi
source $r
done
# Functions
fpath=( $HOME/etc/zsh/functions "${fpath[@]}" )
# Binds
# Alt+x to insert sudo
insert_sudo () { zle beginning-of-line; zle -U "sudo " }
zle -N insert-sudo insert_sudo
bindkey "^X" insert-sudo
bindkey '^U' backward-kill-line
bindkey '^A' beginning-of-line
bindkey '^D' end-of-line
bindkey -a 'gg' beginning-of-buffer-or-history
bindkey "^[" vi-cmd-mode
bindkey -M vicmd 'u' undo
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | alias em='emacsclient -t'
alias rmcdir='cd ..; rmdir $OLDPWD || cd $OLDPWD'
alias ccat="source-highlight --out-format=esc -o STDOUT -i"
alias less='$PAGER'
alias q='exit'
alias gatekeeperlog='grep ssh /var/log/messages | tail'
alias sshdlog='tail -f /var/log/sshd.log'
alias irc="weechat-curses"
alias isitinstalled="pkg_info | grep -i"
alias cpv="rsync -poghb --backup-dir=/tmp/rsync -e /dev/null --progress --"
alias mutt='cd ~/documents && mutt'
alias data='cd /mnt/data'
alias gitdir='cd ~/gitdir'
alias sxiv='sxiv -dr'
alias mdata='ntfs-3g /dev/ada1s1 /mnt/data'
alias androidmount1='mount_msdosfs /dev/da1s1 /mnt/android1'
alias pfflush='pfctl -F all -f /etc/pf.conf'
alias pfloaded='pfctl --vvsr'
alias pfstats='pfctl -s info'
alias android2mount2='mount_msdosfs /dev/da1 /mnt/android2'
alias pflog='ifconfig pflog0 up && tcpdump -n -e -ttt -i pflog0'
alias pr='ping -c 1 192.168.1.1 | tail -3'
alias pg='ping -c 1 google.com | tail -3'
alias open='netstat -tulpn'
alias opena='netstat -antup'
alias ethtool='ethtool eth0'
alias tcpdump='sudo tcpdump -i eth0'
alias installfont='sudo fc-cache -f -v'
alias diff='colordiff'
alias c='clear'
alias e='exit'
alias cp='cp -Rv'
alias :q!='kill -9 $$'
alias :q='exit'
alias szsh='source /home/kopri/.zshrc'
alias pstree++='~/scripts/pstree_color -pl'
alias serve='python -m SimpleHTTPServer 8080'
alias backup='cp filename{,.bak}'
alias weather='ctw --nometric USAZ0233'
alias nocomment='egrep -v "^\s*(#|$)"'
alias god='sudo'
alias smite='rm -rf'
alias ls='ls --color=auto'
alias l.='ls -d .* --color=auto'
alias l='ls -lFH'
alias la='ls -lAFh'
alias lad='ls -d .*(/)'
alias xlx='xrdb -load ~/.Xresources'
alias grep='grep --color=auto'
alias mkdir='mkdir -p'
alias cds='cd ~/scripts'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias ......='cd ../../../../..'
alias .......='cd ../../../../../..'
alias dirsize='du -h --max-depth=1 "$@" | sort -k 1,1hr -k 2,2f'
alias creationdate='stat -F '%D' +mtime'
alias internalip='print ${${$(LC_ALL=C /bin/ifconfig eth0)[7]}:gs/addr://}'
alias freespace='clear;echo "Drive Size Used Avail Use Mounted on";df -h|grep sd|column -t|sort && df -h --total|cut -c 1-11,17-37|tail -n1'
alias magnet-to-torrent='aria2c -q --bt-metadata-only --bt-save-metadata'
alias biggest='find -type f -printf '\''%s %p\n'\'' | sort -nr | head -n 40 | gawk "{ print \$1/1000000 \" \" \$2 \" \" \$3 \" \" \$4 \" \" \$5 \" \" \$6 \" \" \$7 \" \" \$8 \" \" \$9 }"'
alias tardir='( ( D=`builtin pwd`; F=$(date +$HOME/`sed "s,[/ ],#,g" <<< ${D/${HOME}/}`#-%F.tgz); S=$SECONDS; tar --ignore-failed-read --transform "s,^${D%/*},`date +${D%/*}.%F`,S" -czPf "$"F "$D" && logger -s "Tarred $D to $F in $(($SECONDS-$S)) seconds" ) & )'
# Suffix alias
alias -s jpg=sxiv
alias -s png=sxiv
alias -s gif=sxiv
#Global Aliases
alias -g SPRUNGE='| curl -F "sprunge=<-" http://sprunge.us'
alias -g Xresources=$HOME/.Xresources
alias -g xinitrc=$HOME/.xinitrc
alias -g zshrc=$HOME/.zshrc
# Get your external IP.
[ -n "$(command -v curl)" ] && alias externalip='curl ifconfig.me'
# Network discovery.
[ -n "$(command -v nmap)" ] && alias network-discover='nmap -sP "192.168.1.*"'
|
x
1 2 3 4 5 | PROMPT=' %B%F{red}» %f'
RPROMPT='%B%F{black}%~ %B%F{white}%#'
# Color command correction promt
autoload -U colors && colors
export SPROMPT="$fg[cyan]Correct $fg[red]%R$reset_color $fg[magenta]to $fg[green]%r?$reset_color ($fg[white]YES :: NO :: ABORT :: EDIT$fg[white])"
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | zmodload zsh/stat
zmodload zsh/complist
autoload zmv
autoload -U colors && colors
autoload -U vcs_info && vcs_info
autoload -U compinit && compinit -i
autoload -U zmv
setopt extended_glob
setopt prompt_subst
setopt autocd
setopt noclobber
setopt correct
setopt no_case_glob
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_REDUCE_BLANKS
setopt HIST_VERIFY
setopt HIST_SAVE_NO_DUPS
setopt HIST_EXPIRE_DUPS_FIRST
setopt HIST_FIND_NO_DUPS
|
x
1 2 3 4 5 | if type sudo >/dev/null 2>/dev/null; then
#sudo prompt should mention the user name
alias sudo='sudo -p "Annon edhellen, edro hi ammen..."'
fi
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | # show waiting dots for tab completion
expand-or-complete-with-dots() {
echo -n "\e[31m......\e[0m"
zle expand-or-complete
zle redisplay
}
zle -N expand-or-complete-with-dots
bindkey "^I" expand-or-complete-with-dots
# Token types styles.
# See http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC135
ZLE_RESERVED_WORD_STYLE='fg=yellow'
ZLE_ALIAS_STYLE='fg=magenta'
ZLE_BUILTIN_STYLE='fg=cyan'
ZLE_FUNCTION_STYLE='fg=blue'
ZLE_COMMAND_STYLE='fg=green'
ZLE_COMMAND_UNKNOWN_TOKEN_STYLE='fg=red'
ZLE_HYPHEN_CLI_OPTION='fg=yellow'
ZLE_DOUBLE_HYPHEN_CLI_OPTION='fg=green'
ZLE_SINGLE_QUOTED='fg=magenta'
ZLE_DOUBLE_QUOTED='fg=red'
ZLE_BACK_QUOTED='fg=cyan'
ZLE_GLOBING='fg=blue'
ZLE_DEFAULT='fg=white'
ZLE_TOKENS_FOLLOWED_BY_COMMANDS=('|' '||' ';' '&' '&&' 'sudo' 'start' 'time' 'strace' '§')
# Recolorize the current ZLE buffer.
colorize-zle-buffer() {
region_highlight=()
colorize=true
start_pos=0
for arg in ${(z)BUFFER}; do
((start_pos+=${#BUFFER[$start_pos+1,-1]}-${#${BUFFER[$start_pos+1,-1]## #}}))
((end_pos=$start_pos+${#arg}))
if $colorize; then
colorize=false
res=$(LC_ALL=C builtin type $arg 2>/dev/null)
case $res in
*'reserved word'*) style=$ZLE_RESERVED_WORD_STYLE;;
*'an alias'*) style=$ZLE_ALIAS_STYLE;;
*'shell builtin'*) style=$ZLE_BUILTIN_STYLE;;
*'shell function'*) style=$ZLE_FUNCTION_STYLE;;
*"$cmd is"*) style=$ZLE_COMMAND_STYLE;;
*) style=$ZLE_COMMAND_UNKNOWN_TOKEN_STYLE;;
esac
else
case $arg in
'--'*) style=$ZLE_DOUBLE_HYPHEN_CLI_OPTION;;
'-'*) style=$ZLE_HYPHEN_CLI_OPTION;;
"'"*"'") style=$ZLE_SINGLE_QUOTED;;
'"'*'"') style=$ZLE_DOUBLE_QUOTED;;
'`'*'`') style=$ZLE_BACK_QUOTED;;
*"*"*) style=$ZLE_GLOBING;;
*) style=$ZLE_DEFAULT;;
esac
fi
region_highlight+=("$start_pos $end_pos $style")
[[ ${${ZLE_TOKENS_FOLLOWED_BY_COMMANDS[(r)${arg//|/\|}]}:+yes} = 'yes' ]] && colorize=true
start_pos=$end_pos
done
}
# Bind the function to ZLE events.
ZLE_COLORED_FUNCTIONS=(
self-insert
delete-char
backward-delete-char
kill-word
backward-kill-word
up-line-or-history
down-line-or-history
beginning-of-history
end-of-history
undo
redo
yank
)
for f in $ZLE_COLORED_FUNCTIONS; do
eval "$f() { zle .$f && colorize-zle-buffer } ; zle -N $f"
done
# Expand or complete hack
# Thanks to James Ahlborn :
# create an expansion widget which mimics the original "expand-or-complete" (you can see the default setup using "zle -l -L")
zle -C orig-expand-or-complete .expand-or-complete _main_complete
# use the orig-expand-or-complete inside the colorize function (for some reason, using the ".expand-or-complete" widget doesn't work the same)
expand-or-complete() { builtin zle orig-expand-or-complete && colorize-zle-buffer }
zle -N expand-or-complete
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # Syntax Highlighting
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor)
source $HOME/etc/zsh/zsh-syntax-highlighting.zsh
# STYLES
# Aliases and functions
ZSH_HIGHLIGHT_STYLES[alias]='fg=blue,bold'
ZSH_HIGHLIGHT_STYLES[function]='fg=blue,bold'
# Commands and builtins
ZSH_HIGHLIGHT_STYLES[command]="fg=blue,bold"
ZSH_HIGHLIGHT_STYLES[hashed-command]="fg=blue,bold"
ZSH_HIGHLIGHT_STYLES[builtin]="fg=blue,bold"
# Paths
ZSH_HIGHLIGHT_STYLES[path]='fg=white'
# Globbing
ZSH_HIGHLIGHT_STYLES[globbing]='fg=yellow,bold'
# Options and arguments
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=red'
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=red'
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]="fg=green"
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]="fg=green"
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]="fg=green"
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]="fg=green"
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]="fg=green"
# PATTERNS
# rm -rf
ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
# Sudo
ZSH_HIGHLIGHT_PATTERNS+=('sudo ' 'fg=white,bold,bg=red')
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | # ignore completion to commands we don't have
zstyle ':completion:*:functions' ignored-patterns '_*'
# format autocompletion style
zstyle ':completion:*:descriptions' format "%{$c1%}%d%{$reset_color%}"
zstyle ':completion:*:corrections' format "%{$c3%}%d%{$reset_color%}"
zstyle ':completion:*:messages' format "%{$c1%}%d%{$reset_color%}"
zstyle ':completion:*:warnings' format "%{$c1%}%d%{$reset_color%}"
# zstyle show completion menu if 2 or more items to select
zstyle ':completion:*' menu select=2
# zstyle kill menu
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:kill:*' force-list always
zstyle ':completion:*:*:kill:*:processes' list-colors "=(#b) #([0-9]#)*=36=31"
## VCS
# vcs_info
zstyle ':vcs_info:*' enable git hg svn
# check-for-changes can be really slow.
# you should disable it, if you work with large repositories
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' unstagedstr '%F{62}D%F{237}IRTY%f' # display ¹ if there are unstaged changes
zstyle ':vcs_info:*' stagedstr '%F{62}S%F{237}TAGED' # display ² if there are staged changes
zstyle ':vcs_info:*' actionformats "${FMT_BRANCH}${FMT_ACTION}" "${FMT_PATH}"
zstyle ':vcs_info:*' formats "${FMT_BRANCH}" "${FMT_PATH}"
zstyle ':vcs_info:*' nvcsformats "" "%~"
zstyle ':completion:*' accept-exact '*(N)'
zstyle ':completion:*' separate-sections 'yes'
zstyle ':completion:*' list-dirs-first true
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' menu select=200
zstyle ':completion:*' use-perl=1
zstyle ':completion:*' my-accounts='kopri@unixhub.net'
zstyle ':completion:*' squeeze-slashes true
zstyle ':completion:*:cd:*' ignore-parents parent pwd
#zstyle ':completion:*:cd:*' tag-order 'named-directories'
zstyle ':completion:*:(all-|)files' ignored-patterns '*.un~'
zstyle ':completion:*:*:kill:*:processes' \
list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion::complete:*' use-cache on
zstyle ':completion::complete:*' cache-path ~/etc/cache/$HOST
zstyle ':completion:*:processes' command 'ps -axw'
zstyle ':completion:*:processes-names' command 'ps -awxho command'
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
zstyle ':completion:*:functions' ignored-patterns '_*'
zstyle ':completion:*' group-name ''
zstyle ':completion:*:*:mplayer:*' tag-order files
zstyle ':completion:*:*:mplayer:*' file-patterns \
'*.(rmvb|mkv|mpg|wmv|mpeg|avi|flv|mp3|mp4|flac|ogg):video' \
'*:all-files' '*(-/):directories'
zstyle ':completion:*:*:(vim|rview|vimdiff|xxd):*:*files' \
ignored-patterns '*~|*.(old|bak|zwc|viminfo|rxvt-*|zcompdump)|pm_to_blib|cover_db|blib' \
file-sort modification
zstyle ':completion:*:*:(vim|rview|vimdiff|xxd):*' \
file-sort modification
zstyle ':completion:*:*:(vim|rview|vimdiff|xxd):*' \
tag-order files
#zstyle ':completion:*:vim:*:directories' ignored-patterns \*
zstyle ':completion:*:*:(scp):*' \
file-sort modification
zstyle ':completion:*:*:(cd):*:*files' ignored-patterns '*~' file-sort access
zstyle ':completion:*:*:(cd):*' file-sort access
zstyle ':completion:*:*:(cd):*' menu select
zstyle ':completion:*:*:(cd):*' completer _history
zstyle ':completion:*:*:perl:*' file-patterns '*'
zstyle ':completion:*:descriptions' \
format $'%{- \e[38;5;137;1m\e[48;5;234m%}%B%d%b%{\e[m%}'
zstyle ':completion:*:warnings' \
format $'%{No match for \e[38;5;240;1m%}%d%{\e[m%}'
zstyle ':completion:*:*:apvlv:*' tag-order files
zstyle ':completion:*:*:apvlv:*' file-patterns '*.pdf'
zstyle ':completion:most-accessed-file:*' match-original both
zstyle ':completion:most-accessed-file:*' file-sort access
zstyle ':completion:most-accessed-file:*' file-patterns '*:all\ files'
zstyle ':completion:most-accessed-file:*' hidden all
zstyle ':completion:most-accessed-file:*' completer _files
zstyle ':completion:*:scp:*' group-order \
users files all-files hosts-domain hosts-host hosts-ipaddr
zstyle ':completion:*:ssh:*' tag-order \
users 'hosts:-host hosts:-domain:domain hosts:-ipaddr:IP\ address *'
zstyle ':completion:*:ssh:*' group-order \
hosts-domain hosts-host users hosts-ipaddr
zstyle ':completion:*:(ssh|scp):*:hosts-host' ignored-patterns \
'*.*' loopback localhost
zstyle ':completion:*:(ssh|scp):*:hosts-domain' ignored-patterns \
'<->.<->.<->.<->' '^*.*' '*@*'
zstyle ':completion:*:(ssh|scp):*:hosts-ipaddr' ignored-patterns \
'^<->.<->.<->.<->' '127.0.0.<->'
zstyle ':completion:*:(ssh|scp):*:users' ignored-patterns \
adm bin daemon halt lp named shutdown sync
zstyle ':completion:*:(ssh|scp):*:my-accounts' users-hosts \
'kopri@kopri.mooo.com' 'root@192.168.1.1' 'mobile@192.168.1.2'
zstyle ':completion:*:*:*:users' ignored-patterns \
adm amanda apache avahi beaglidx bin cacti canna clamav daemon \
dbus distcache dovecot fax ftp games gdm gkrellmd gopher \
hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \
mailman mailnull mldonkey mysql nagios \
named netdump news nfsnobody nobody nscd ntp nut nx openvpn \
operator pcap postfix postgres privoxy pulse pvm quagga radvd \
rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs
zstyle '*' single-ignored show
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | # utility functions
# this function checks if a command exists and returns either true
# or false. This avoids using 'which' and 'whence', which will
# avoid problems with aliases for which on certain weird systems. :-)
# Usage: check_com [-c|-g] word
# -c only checks for external commands
# -g does the usual tests and also checks for global aliases
check_com() {
emulate -L zsh
local -i comonly gatoo
if [[ $1 == '-c' ]] ; then
(( comonly = 1 ))
shift
elif [[ $1 == '-g' ]] ; then
(( gatoo = 1 ))
else
(( comonly = 0 ))
(( gatoo = 0 ))
fi
if (( ${#argv} != 1 )) ; then
printf 'usage: check_com [-c] <command>\n' >&2
return 1
fi
if (( comonly > 0 )) ; then
[[ -n ${commands[$1]} ]] && return 0
return 1
fi
if [[ -n ${commands[$1]} ]] \
|| [[ -n ${functions[$1]} ]] \
|| [[ -n ${aliases[$1]} ]] \
|| [[ -n ${reswords[(r)$1]} ]] ; then
return 0
fi
if (( gatoo > 0 )) && [[ -n ${galiases[$1]} ]] ; then
return 0
fi
return 1
}
|
x
1 2 3 4 5 6 7 8 | export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
export PAGER=less
|
x
1 2 3 4 5 6 7 8 9 10 11 12 | mkcd() {
if (( ARGC != 1 )); then
printf 'usage: mkcd <new-directory>\n'
return 1;
fi
if [[ ! -d "$1" ]]; then
command mkdir -p "$1"
else
printf '`%s'\'' already exists: cd-ing.\n' "$1"
fi
builtin cd "$1"
}
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | # Usage: simple-extract <file>
# Using option -d deletes the original archive file.
#f5# Smart archive extractor
simple-extract() {
emulate -L zsh
setopt extended_glob noclobber
local DELETE_ORIGINAL DECOMP_CMD USES_STDIN USES_STDOUT GZTARGET WGET_CMD
local RC=0
zparseopts -D -E "d=DELETE_ORIGINAL"
for ARCHIVE in "${@}"; do
case $ARCHIVE in
*(tar.bz2|tbz2|tbz))
DECOMP_CMD="tar -xvjf -"
USES_STDIN=true
USES_STDOUT=false
;;
*(tar.gz|tgz))
DECOMP_CMD="tar -xvzf -"
USES_STDIN=true
USES_STDOUT=false
;;
*(tar.xz|txz|tar.lzma))
DECOMP_CMD="tar -xvJf -"
USES_STDIN=true
USES_STDOUT=false
;;
*tar)
DECOMP_CMD="tar -xvf -"
USES_STDIN=true
USES_STDOUT=false
;;
*rar)
DECOMP_CMD="unrar x"
USES_STDIN=false
USES_STDOUT=false
;;
*lzh)
DECOMP_CMD="lha x"
USES_STDIN=false
USES_STDOUT=false
;;
*7z)
DECOMP_CMD="7z x"
USES_STDIN=false
USES_STDOUT=false
;;
*(zip|jar))
DECOMP_CMD="unzip"
USES_STDIN=false
USES_STDOUT=false
;;
*deb)
DECOMP_CMD="ar -x"
USES_STDIN=false
USES_STDOUT=false
;;
*bz2)
DECOMP_CMD="bzip2 -d -c -"
USES_STDIN=true
USES_STDOUT=true
;;
*(gz|Z))
DECOMP_CMD="gzip -d -c -"
USES_STDIN=true
USES_STDOUT=true
;;
*(xz|lzma))
DECOMP_CMD="xz -d -c -"
USES_STDIN=true
USES_STDOUT=true
;;
*)
print "ERROR: '$ARCHIVE' has unrecognized archive type." >&2
RC=$((RC+1))
continue
;;
esac
if ! check_com ${DECOMP_CMD[(w)1]}; then
echo "ERROR: ${DECOMP_CMD[(w)1]} not installed." >&2
RC=$((RC+2))
continue
fi
GZTARGET="${ARCHIVE:t:r}"
if [[ -f $ARCHIVE ]] ; then
print "Extracting '$ARCHIVE' ..."
if $USES_STDIN; then
if $USES_STDOUT; then
${=DECOMP_CMD} < "$ARCHIVE" > $GZTARGET
else
${=DECOMP_CMD} < "$ARCHIVE"
fi
else
if $USES_STDOUT; then
${=DECOMP_CMD} "$ARCHIVE" > $GZTARGET
else
${=DECOMP_CMD} "$ARCHIVE"
fi
fi
[[ $? -eq 0 && -n "$DELETE_ORIGINAL" ]] && rm -f "$ARCHIVE"
elif [[ "$ARCHIVE" == (#s)(https|http|ftp)://* ]] ; then
if check_com curl; then
WGET_CMD="curl -L -k -s -o -"
elif check_com wget; then
WGET_CMD="wget -q -O - --no-check-certificate"
else
print "ERROR: neither wget nor curl is installed" >&2
RC=$((RC+4))
continue
fi
print "Downloading and Extracting '$ARCHIVE' ..."
if $USES_STDIN; then
if $USES_STDOUT; then
${=WGET_CMD} "$ARCHIVE" | ${=DECOMP_CMD} > $GZTARGET
RC=$((RC+$?))
else
${=WGET_CMD} "$ARCHIVE" | ${=DECOMP_CMD}
RC=$((RC+$?))
fi
else
if $USES_STDOUT; then
${=DECOMP_CMD} =(${=WGET_CMD} "$ARCHIVE") > $GZTARGET
else
${=DECOMP_CMD} =(${=WGET_CMD} "$ARCHIVE")
fi
fi
else
print "ERROR: '$ARCHIVE' is neither a valid file nor a supported URI." >&2
RC=$((RC+8))
fi
done
return $RC
}
__archive_or_uri()
{
_alternative \
'files:Archives:_files -g "*.(#l)(tar.bz2|tbz2|tbz|tar.gz|tgz|tar.xz|txz|tar.lzma|tar|rar|lzh|7z|zip|jar|deb|bz2|gz|Z|xz|lzma)"' \
'_urls:Remote Archives:_urls'
}
_simple_extract()
{
_arguments \
'-d[delete original archivefile after extraction]' \
'*:Archive Or Uri:__archive_or_uri'
}
compdef _simple_extract simple-extract
alias se=simple-extract
#f5# Set all ulimit parameters to \kbd{unlimited}
allulimit() {
ulimit -c unlimited
ulimit -d unlimited
ulimit -f unlimited
ulimit -l unlimited
ulimit -n unlimited
ulimit -s unlimited
ulimit -t unlimited
}
|
x
1 2 3 4 5 6 7 8 9 10 | # This will change your TTY colors tho those in your .Xresources
# Apply Xresources colors to the TTY
if [ "$TERM" = "linux" ]; then
_SEDCMD='s/.*\*color\([0-9]\{1,\}\).*#\([0-9a-fA-F]\{6\}\).*/\1 \2/p'
for i in $(sed -n "$_SEDCMD" $HOME/.Xresources | \
awk '$1 < 16 {printf "\\e]P%X%s", $1, $2}'); do
echo -en "$i"
done
clear
fi
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # Ensures that $terminfo values are valid and updates editor information when
# the keymap changes.
function zle-keymap-select zle-line-init zle-line-finish {
# The terminal must be in application mode when ZLE is active for $terminfo
# values to be valid.
if (( ${+terminfo[smkx]} )); then
printf '%s' ${terminfo[smkx]}
fi
if (( ${+terminfo[rmkx]} )); then
printf '%s' ${terminfo[rmkx]}
fi
zle reset-prompt
zle -R
}
zle -N zle-line-init
zle -N zle-line-finish
zle -N zle-keymap-select
bindkey -v
# if mode indicator wasn't setup by theme, define default
if [[ "$MODE_INDICATOR" == "" ]]; then
MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}"
fi
function vi_mode_prompt_info() {
echo "${${KEYMAP/vicmd/$MODE_INDICATOR}/(main|viins)/}"
}
# define right prompt, if it wasn't defined by a theme
if [[ "$RPS1" == "" && "$RPROMPT" == "" ]]; then
RPS1='$(vi_mode_prompt_info)'
fi
|
x
Notes
I’ve taken what I though was the best stuff from all over the internet and put it into one monster zsh config. The .zshrc goes in your home folder as normal all other files go into ~/etc/zsh. I’ve split it up into a bunch of different files, each are auto loaded by a script in .zshrc. Files with the name /plugin/etc.zsh go in the folder ~/etc/zsh/plugin same with functions they go in ~/etc/zsh/functions. You need to install zsh-syntax-highlighting https://github.com/zsh-users/zsh-syntax-highlighting. I removed my functions from this config so I would not have to upload too many files, you can find them on my github at https://github.com/kopri-nb/dotfiles
sunmix said about 7 years ago
alias q=‘exit’; :q=‘exit; e='exit’ == {q,:q,e}=‘exit’