Base zsh configuration
This commit is contained in:
parent
c14b923ab4
commit
da0b93c4dd
9 changed files with 563 additions and 0 deletions
10
README.md
10
README.md
|
|
@ -2,3 +2,13 @@ zsh
|
||||||
===
|
===
|
||||||
|
|
||||||
Zsh configuration
|
Zsh configuration
|
||||||
|
|
||||||
|
Install
|
||||||
|
-------
|
||||||
|
|
||||||
|
* clone oh-my-zsh
|
||||||
|
git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-myzsh
|
||||||
|
|
||||||
|
* Link configuration
|
||||||
|
ln -s zshrc ~/.zshrc
|
||||||
|
for i in `ls custom`; do ln -s custom/$i ~/.oh-my-zsh/custom/$i
|
||||||
|
|
|
||||||
46
custom/hybris-alias.zsh
Normal file
46
custom/hybris-alias.zsh
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Scripts files
|
||||||
|
if [ -d $HOME/scripts ]
|
||||||
|
then
|
||||||
|
files=`ls $HOME/scripts`
|
||||||
|
if [ "x$files" != "x" ]
|
||||||
|
then
|
||||||
|
for i in `ls --file-type $HOME/scripts`
|
||||||
|
do
|
||||||
|
ALIAS=`echo $i | cut -d. -f1`
|
||||||
|
alias $ALIAS=$HOME/scripts/$i
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Everyday aliases
|
||||||
|
alias cp='nocorrect cp' # no spelling correction on cp
|
||||||
|
alias cvlc-add='cvlc --playlist-enqueue'
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias h=history
|
||||||
|
alias j=jobs
|
||||||
|
alias l='ls -l'
|
||||||
|
alias la='ls -la'
|
||||||
|
alias ll='ls -l'
|
||||||
|
alias ls='ls --color=auto -F'
|
||||||
|
alias mkdir='nocorrect mkdir' # no spelling correction on mkdir
|
||||||
|
alias mv='nocorrect mv' # no spelling correction on mv
|
||||||
|
alias wi='wicd-curses'
|
||||||
|
|
||||||
|
alias -g M='|more'
|
||||||
|
alias -g H='|head'
|
||||||
|
alias -g T='|tail'
|
||||||
|
|
||||||
|
configupdate() {cd ~/; git add config; git commit -m "config update"; git push; cd -}
|
||||||
|
e() {emacsclient -n $@ > /dev/null 2>&1}
|
||||||
|
git-send-email() {git send-email --smtp-server /usr/bin/msmtp $@}
|
||||||
|
history() {perl -lne 'm#: (\d+):\d+;(.+)# && printf "\033[94m%s\033[0m %s\n",scalar localtime $1,$2' ~/.zhist}
|
||||||
|
logtail() {tail -f $1 | ccze -A}
|
||||||
|
mutt() {echo -ne "\033]0;screen mutt\007" ; /usr/bin/screen -O -S mutt -c ~/.screenrc_mutt}
|
||||||
|
quicksave() {cp --backup=numbered "$@" /tmp/}
|
||||||
|
wallpaper() {rm -f /home/hybris/Pictures/wallpaper; ln -s `pwd`/$1 /home/hybris/Pictures/wallpaper}
|
||||||
|
whiteboard() {convert "$1" -morphology Convolve DoG:15,100,0 -negate -normalize -blur 0x1 -channel RBG -level 60%,91%,0.1 "$2"}
|
||||||
|
|
||||||
|
# System
|
||||||
|
mouseon() {xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 8 1}
|
||||||
|
mouseoff() {xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 8 0}
|
||||||
|
pulse-restart() {killall pulseaudio && /usr/bin/pulseaudio --start --log-target=syslog}
|
||||||
108
custom/hybris-dir-colors
Normal file
108
custom/hybris-dir-colors
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
# Configuration file for dircolors, a utility to help you set the
|
||||||
|
# LS_COLORS environment variable used by GNU ls with the --color option.
|
||||||
|
# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
|
||||||
|
# slackware version of dircolors) are recognized but ignored.
|
||||||
|
# Below, there should be one TERM entry for each termtype that is colorizable
|
||||||
|
TERM linux
|
||||||
|
TERM linux-c
|
||||||
|
TERM mach-color
|
||||||
|
TERM console
|
||||||
|
TERM con132x25
|
||||||
|
TERM con132x30
|
||||||
|
TERM con132x43
|
||||||
|
TERM con132x60
|
||||||
|
TERM con80x25
|
||||||
|
TERM con80x28
|
||||||
|
TERM con80x30
|
||||||
|
TERM con80x43
|
||||||
|
TERM con80x50
|
||||||
|
TERM con80x60
|
||||||
|
TERM cygwin
|
||||||
|
TERM dtterm
|
||||||
|
TERM putty
|
||||||
|
TERM xterm
|
||||||
|
TERM xterm-color
|
||||||
|
TERM xterm-debian
|
||||||
|
TERM rxvt
|
||||||
|
TERM screen
|
||||||
|
TERM screen-bce
|
||||||
|
TERM screen-w
|
||||||
|
TERM vt100
|
||||||
|
TERM Eterm
|
||||||
|
# Below are the color init strings for the basic file types. A color init
|
||||||
|
# string consists of one or more of the following numeric codes:
|
||||||
|
# Attribute codes:
|
||||||
|
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
|
||||||
|
# Text color codes:
|
||||||
|
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
|
||||||
|
# Background color codes:
|
||||||
|
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
|
||||||
|
NORMAL 00 # global default, although everything should be something.
|
||||||
|
FILE 00 # normal file
|
||||||
|
DIR 01;33 # directory
|
||||||
|
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
|
||||||
|
# numerical value, the color is as for the file pointed to.)
|
||||||
|
FIFO 40;33 # pipe
|
||||||
|
SOCK 01;35 # socket
|
||||||
|
DOOR 01;35 # door
|
||||||
|
BLK 40;33;01 # block device driver
|
||||||
|
CHR 40;33;01 # character device driver
|
||||||
|
ORPHAN 40;31;01 # symlink to nonexistent file
|
||||||
|
SETUID 37;41 # file that is setuid (u+s)
|
||||||
|
SETGID 30;43 # file that is setgid (g+s)
|
||||||
|
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
|
||||||
|
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
|
||||||
|
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
|
||||||
|
# This is for files with execute permission:
|
||||||
|
EXEC 01;32
|
||||||
|
# List any file extensions like '.gz' or '.tar' that you would like ls
|
||||||
|
# to colorize below. Put the extension, a space, and the color init string.
|
||||||
|
# (and any comments you want to add after a '#')
|
||||||
|
# If you use DOS-style suffixes, you may want to uncomment the following:
|
||||||
|
#.cmd 01;32 # executables (bright green)
|
||||||
|
#.exe 01;32
|
||||||
|
#.com 01;32
|
||||||
|
#.btm 01;32
|
||||||
|
#.bat 01;32
|
||||||
|
.tar 01;31 # archives or compressed (bright red)
|
||||||
|
.tgz 01;31
|
||||||
|
.arj 01;31
|
||||||
|
.taz 01;31
|
||||||
|
.lzh 01;31
|
||||||
|
.zip 01;31
|
||||||
|
.z 01;31
|
||||||
|
.Z 01;31
|
||||||
|
.gz 01;31
|
||||||
|
.bz2 01;31
|
||||||
|
.deb 01;31
|
||||||
|
.rpm 01;31
|
||||||
|
.jar 01;31
|
||||||
|
# image formats
|
||||||
|
.jpg 01;35
|
||||||
|
.jpeg 01;35
|
||||||
|
.gif 01;35
|
||||||
|
.bmp 01;35
|
||||||
|
.pbm 01;35
|
||||||
|
.pgm 01;35
|
||||||
|
.ppm 01;35
|
||||||
|
.tga 01;35
|
||||||
|
.xbm 01;35
|
||||||
|
.xpm 01;35
|
||||||
|
.tif 01;35
|
||||||
|
.tiff 01;35
|
||||||
|
.png 01;35
|
||||||
|
.mov 01;35
|
||||||
|
.mpg 01;35
|
||||||
|
.mpeg 01;35
|
||||||
|
.avi 01;35
|
||||||
|
.fli 01;35
|
||||||
|
.gl 01;35
|
||||||
|
.dl 01;35
|
||||||
|
.xcf 01;35
|
||||||
|
.xwd 01;35
|
||||||
|
# audio formats
|
||||||
|
.flac 01;35
|
||||||
|
.mp3 01;35
|
||||||
|
.mpc 01;35
|
||||||
|
.ogg 01;35
|
||||||
|
.wav 01;35
|
||||||
19
custom/hybris-display.zsh
Normal file
19
custom/hybris-display.zsh
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Shut the f*ck up.
|
||||||
|
xset b off
|
||||||
|
|
||||||
|
# bip at command end
|
||||||
|
function precmd() {
|
||||||
|
echo -n -e "\a"
|
||||||
|
if [ "$TERM" != dumb ]; then echo -en "\033]0;${USER}@$(hostname)\007"; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# do not share history between terms...
|
||||||
|
unsetopt share_history
|
||||||
|
|
||||||
|
# "ctrl-x e" to edit command
|
||||||
|
autoload edit-command-line
|
||||||
|
zle -N edit-command-line
|
||||||
|
bindkey '^Xe' edit-command-line
|
||||||
|
|
||||||
|
# dir colors
|
||||||
|
eval `dircolors $HOME/.oh-my-zsh/custom/hybris-dir-colors`
|
||||||
11
custom/hybris-export.zsh
Normal file
11
custom/hybris-export.zsh
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Personnal
|
||||||
|
export EDITOR=emacsclient
|
||||||
|
export HISTFILE=~/.zhist
|
||||||
|
export HISTSIZE=5000
|
||||||
|
export LESS=-cex3MRX
|
||||||
|
export LESSOPEN='|~/.lessfilter %s'
|
||||||
|
export LOGCHECK=60
|
||||||
|
export READNULLCMD=${PAGER:-/usr/bin/pager}
|
||||||
|
export SAVEHIST=5000
|
||||||
|
export WATCH=all
|
||||||
|
export WATCHFMT="%n has %a %l from %M"
|
||||||
72
custom/hybris-zsh.zsh
Normal file
72
custom/hybris-zsh.zsh
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
if [ $UID -eq 0 ]; then
|
||||||
|
umask 077;
|
||||||
|
else
|
||||||
|
umask 022;
|
||||||
|
fi
|
||||||
|
|
||||||
|
autoload incremental-complete-word
|
||||||
|
autoload insert-files
|
||||||
|
autoload mere zed zfinit
|
||||||
|
autoload run-help
|
||||||
|
autoload -U compinit
|
||||||
|
autoload -U promptinit
|
||||||
|
autoload -U zen
|
||||||
|
compinit
|
||||||
|
promptinit
|
||||||
|
zle -N incremental-complete-word
|
||||||
|
zle -N insert-files
|
||||||
|
zmodload zsh/complist
|
||||||
|
|
||||||
|
bindkey m menu-select
|
||||||
|
bindkey i incremental-complete-word
|
||||||
|
bindkey j insert-files
|
||||||
|
|
||||||
|
fignore=(.o .c~ .pro)
|
||||||
|
fpath=(
|
||||||
|
$fpath
|
||||||
|
/root/.zen/zsh/scripts
|
||||||
|
/root/.zen/zsh/zle )
|
||||||
|
|
||||||
|
limit core 0
|
||||||
|
|
||||||
|
setopt correct
|
||||||
|
setopt auto_cd
|
||||||
|
setopt hist_ignore_dups
|
||||||
|
setopt auto_list
|
||||||
|
setopt append_history
|
||||||
|
setopt auto_param_keys
|
||||||
|
setopt auto_param_slash
|
||||||
|
setopt no_bg_nice
|
||||||
|
setopt complete_aliases
|
||||||
|
setopt equals
|
||||||
|
setopt extended_glob
|
||||||
|
setopt extendedhistory
|
||||||
|
setopt hash_cmds
|
||||||
|
setopt hash_dirs
|
||||||
|
setopt mail_warning
|
||||||
|
setopt magic_equal_subst
|
||||||
|
setopt numericglobsort
|
||||||
|
setopt interactivecomments
|
||||||
|
setopt printeightbit
|
||||||
|
|
||||||
|
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin
|
||||||
|
zstyle ':completion:*' format '-=> %d'
|
||||||
|
zstyle ':completion:*' auto-description 'specify: %d'
|
||||||
|
zstyle ':completion:*' completer _complete _correct _approximate
|
||||||
|
zstyle ':completion:*' group-name ''
|
||||||
|
zstyle ':completion:*' insert-unambiguous true
|
||||||
|
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
|
||||||
|
zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}' 'l:|=* r:|=*' 'r:|[
|
||||||
|
._-]=* r:|=*'
|
||||||
|
zstyle ':completion:*' max-errors 2
|
||||||
|
zstyle ':completion:*' menu select=5
|
||||||
|
zstyle ':completion:*' original true
|
||||||
|
zstyle ':completion:*' squeeze-slashes true
|
||||||
|
zstyle ':completion:*' verbose true
|
||||||
|
zstyle ':completion:*:rm:*' ignore-line yes
|
||||||
|
zstyle ':completion:*:mv:*' ignore-line yes
|
||||||
|
zstyle ':completion:*:cp:*' ignore-line yes
|
||||||
|
|
||||||
|
unsetopt inc_append_history
|
||||||
|
|
||||||
|
if [ "$TERM" != dumb ]; then echo -en "\033]0;${USER}@$(hostname)\007"; fi
|
||||||
7
custom/hybris.zsh-theme
Normal file
7
custom/hybris.zsh-theme
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
PROMPT='%{${fg_bold[white]}%}%n%{$reset_color%}%{${fg[white]}%}@%m%{$reset_color%} %{$fg[white]%}$%{$reset_color%} '
|
||||||
|
RPROMPT='%(?,,%{${fg_bold[red]}%}[%?] %{$reset_color%})$(git_prompt_info)%{$fg[green]%}%~%{$reset_color%}'
|
||||||
|
|
||||||
|
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[blue]%}("
|
||||||
|
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
|
||||||
|
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%})%{$fg[red]%}!%{$reset_color%}"
|
||||||
|
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"
|
||||||
245
custom/z.zsh
Normal file
245
custom/z.zsh
Normal file
|
|
@ -0,0 +1,245 @@
|
||||||
|
# Copyright (c) 2009 rupa deadwyler under the WTFPL license
|
||||||
|
|
||||||
|
# maintains a jump-list of the directories you actually use
|
||||||
|
#
|
||||||
|
# INSTALL:
|
||||||
|
# * put something like this in your .bashrc/.zshrc:
|
||||||
|
# . /path/to/z.sh
|
||||||
|
# * cd around for a while to build up the db
|
||||||
|
# * PROFIT!!
|
||||||
|
# * optionally:
|
||||||
|
# set $_Z_CMD in .bashrc/.zshrc to change the command (default z).
|
||||||
|
# set $_Z_DATA in .bashrc/.zshrc to change the datafile (default ~/.z).
|
||||||
|
# set $_Z_NO_RESOLVE_SYMLINKS to prevent symlink resolution.
|
||||||
|
# set $_Z_NO_PROMPT_COMMAND if you're handling PROMPT_COMMAND yourself.
|
||||||
|
# set $_Z_EXCLUDE_DIRS to an array of directories to exclude.
|
||||||
|
#
|
||||||
|
# USE:
|
||||||
|
# * z foo # cd to most frecent dir matching foo
|
||||||
|
# * z foo bar # cd to most frecent dir matching foo and bar
|
||||||
|
# * z -r foo # cd to highest ranked dir matching foo
|
||||||
|
# * z -t foo # cd to most recently accessed dir matching foo
|
||||||
|
# * z -l foo # list matches instead of cd
|
||||||
|
# * z -c foo # restrict matches to subdirs of $PWD
|
||||||
|
|
||||||
|
export _Z_EXCLUDE_DIRS="/tmp /lost+found"
|
||||||
|
|
||||||
|
[ -d "${_Z_DATA:-$HOME/.z}" ] && {
|
||||||
|
echo "ERROR: z.sh's datafile (${_Z_DATA:-$HOME/.z}) is a directory."
|
||||||
|
}
|
||||||
|
|
||||||
|
_z() {
|
||||||
|
|
||||||
|
local datafile="${_Z_DATA:-$HOME/.z}"
|
||||||
|
|
||||||
|
# bail if we don't own ~/.z (we're another user but our ENV is still set)
|
||||||
|
[ -f "$datafile" -a ! -O "$datafile" ] && return
|
||||||
|
|
||||||
|
# add entries
|
||||||
|
if [ "$1" = "--add" ]; then
|
||||||
|
shift
|
||||||
|
|
||||||
|
# $HOME isn't worth matching
|
||||||
|
[ "$*" = "$HOME" ] && return
|
||||||
|
|
||||||
|
# don't track excluded dirs
|
||||||
|
local exclude
|
||||||
|
for exclude in "${_Z_EXCLUDE_DIRS[@]}"; do
|
||||||
|
[ "$*" = "$exclude" ] && return
|
||||||
|
done
|
||||||
|
|
||||||
|
# maintain the data file
|
||||||
|
local tempfile="$datafile.$RANDOM"
|
||||||
|
while read line; do
|
||||||
|
# only count directories
|
||||||
|
[ -d "${line%%\|*}" ] && echo $line
|
||||||
|
done < "$datafile" | awk -v path="$*" -v now="$(date +%s)" -F"|" '
|
||||||
|
BEGIN {
|
||||||
|
rank[path] = 1
|
||||||
|
time[path] = now
|
||||||
|
}
|
||||||
|
$2 >= 1 {
|
||||||
|
# drop ranks below 1
|
||||||
|
if( $1 == path ) {
|
||||||
|
rank[$1] = $2 + 1
|
||||||
|
time[$1] = now
|
||||||
|
} else {
|
||||||
|
rank[$1] = $2
|
||||||
|
time[$1] = $3
|
||||||
|
}
|
||||||
|
count += $2
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if( count > 6000 ) {
|
||||||
|
# aging
|
||||||
|
for( x in rank ) print x "|" 0.99*rank[x] "|" time[x]
|
||||||
|
} else for( x in rank ) print x "|" rank[x] "|" time[x]
|
||||||
|
}
|
||||||
|
' 2>/dev/null >| "$tempfile"
|
||||||
|
# do our best to avoid clobbering the datafile in a race condition
|
||||||
|
if [ $? -ne 0 -a -f "$datafile" ]; then
|
||||||
|
env rm -f "$tempfile"
|
||||||
|
else
|
||||||
|
env mv -f "$tempfile" "$datafile" || env rm -f "$tempfile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# tab completion
|
||||||
|
elif [ "$1" = "--complete" ]; then
|
||||||
|
while read line; do
|
||||||
|
[ -d "${line%%\|*}" ] && echo $line
|
||||||
|
done < "$datafile" | awk -v q="$2" -F"|" '
|
||||||
|
BEGIN {
|
||||||
|
if( q == tolower(q) ) imatch = 1
|
||||||
|
split(substr(q, 3), fnd, " ")
|
||||||
|
}
|
||||||
|
{
|
||||||
|
if( imatch ) {
|
||||||
|
for( x in fnd ) tolower($1) !~ tolower(fnd[x]) && $1 = ""
|
||||||
|
} else {
|
||||||
|
for( x in fnd ) $1 !~ fnd[x] && $1 = ""
|
||||||
|
}
|
||||||
|
if( $1 ) print $1
|
||||||
|
}
|
||||||
|
' 2>/dev/null
|
||||||
|
|
||||||
|
else
|
||||||
|
# list/go
|
||||||
|
while [ "$1" ]; do case "$1" in
|
||||||
|
--) while [ "$1" ]; do shift; local fnd="$fnd${fnd:+ }$1";done;;
|
||||||
|
-*) local opt=${1:1}; while [ "$opt" ]; do case ${opt:0:1} in
|
||||||
|
c) local fnd="^$PWD $fnd";;
|
||||||
|
h) echo "${_Z_CMD:-z} [-chlrtx] args" >&2; return;;
|
||||||
|
x) sed -i -e "\:^${PWD}|.*:d" "$datafile";;
|
||||||
|
l) local list=1;;
|
||||||
|
r) local typ="rank";;
|
||||||
|
t) local typ="recent";;
|
||||||
|
esac; opt=${opt:1}; done;;
|
||||||
|
*) local fnd="$fnd${fnd:+ }$1";;
|
||||||
|
esac; local last=$1; shift; done
|
||||||
|
[ "$fnd" -a "$fnd" != "^$PWD " ] || local list=1
|
||||||
|
|
||||||
|
# if we hit enter on a completion just go there
|
||||||
|
case "$last" in
|
||||||
|
# completions will always start with /
|
||||||
|
/*) [ -z "$list" -a -d "$last" ] && cd "$last" && return;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# no file yet
|
||||||
|
[ -f "$datafile" ] || return
|
||||||
|
|
||||||
|
local cd
|
||||||
|
cd="$(while read line; do
|
||||||
|
[ -d "${line%%\|*}" ] && echo $line
|
||||||
|
done < "$datafile" | awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -F"|" '
|
||||||
|
function frecent(rank, time) {
|
||||||
|
# relate frequency and time
|
||||||
|
dx = t - time
|
||||||
|
if( dx < 3600 ) return rank * 4
|
||||||
|
if( dx < 86400 ) return rank * 2
|
||||||
|
if( dx < 604800 ) return rank / 2
|
||||||
|
return rank / 4
|
||||||
|
}
|
||||||
|
function output(files, out, common) {
|
||||||
|
# list or return the desired directory
|
||||||
|
if( list ) {
|
||||||
|
cmd = "sort -n >&2"
|
||||||
|
for( x in files ) {
|
||||||
|
if( files[x] ) printf "%-10s %s\n", files[x], x | cmd
|
||||||
|
}
|
||||||
|
if( common ) {
|
||||||
|
printf "%-10s %s\n", "common:", common > "/dev/stderr"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if( common ) out = common
|
||||||
|
print out
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function common(matches) {
|
||||||
|
# find the common root of a list of matches, if it exists
|
||||||
|
for( x in matches ) {
|
||||||
|
if( matches[x] && (!short || length(x) < length(short)) ) {
|
||||||
|
short = x
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( short == "/" ) return
|
||||||
|
# use a copy to escape special characters, as we want to return
|
||||||
|
# the original. yeah, this escaping is awful.
|
||||||
|
clean_short = short
|
||||||
|
gsub(/[\(\)\[\]\|]/, "\\\\&", clean_short)
|
||||||
|
for( x in matches ) if( matches[x] && x !~ clean_short ) return
|
||||||
|
return short
|
||||||
|
}
|
||||||
|
BEGIN { split(q, words, " "); hi_rank = ihi_rank = -9999999999 }
|
||||||
|
{
|
||||||
|
if( typ == "rank" ) {
|
||||||
|
rank = $2
|
||||||
|
} else if( typ == "recent" ) {
|
||||||
|
rank = $3 - t
|
||||||
|
} else rank = frecent($2, $3)
|
||||||
|
matches[$1] = imatches[$1] = rank
|
||||||
|
for( x in words ) {
|
||||||
|
if( $1 !~ words[x] ) delete matches[$1]
|
||||||
|
if( tolower($1) !~ tolower(words[x]) ) delete imatches[$1]
|
||||||
|
}
|
||||||
|
if( matches[$1] && matches[$1] > hi_rank ) {
|
||||||
|
best_match = $1
|
||||||
|
hi_rank = matches[$1]
|
||||||
|
} else if( imatches[$1] && imatches[$1] > ihi_rank ) {
|
||||||
|
ibest_match = $1
|
||||||
|
ihi_rank = imatches[$1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
# prefer case sensitive
|
||||||
|
if( best_match ) {
|
||||||
|
output(matches, best_match, common(matches))
|
||||||
|
} else if( ibest_match ) {
|
||||||
|
output(imatches, ibest_match, common(imatches))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
')"
|
||||||
|
[ $? -gt 0 ] && return
|
||||||
|
[ "$cd" ] && cd "$cd"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
alias ${_Z_CMD:-z}='_z 2>&1'
|
||||||
|
|
||||||
|
[ "$_Z_NO_RESOLVE_SYMLINKS" ] || _Z_RESOLVE_SYMLINKS="-P"
|
||||||
|
|
||||||
|
if compctl >/dev/null 2>&1; then
|
||||||
|
# zsh
|
||||||
|
[ "$_Z_NO_PROMPT_COMMAND" ] || {
|
||||||
|
# populate directory list, avoid clobbering any other precmds.
|
||||||
|
if [ "$_Z_NO_RESOLVE_SYMLINKS" ]; then
|
||||||
|
_z_precmd() {
|
||||||
|
_z --add "${PWD:a}"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_z_precmd() {
|
||||||
|
_z --add "${PWD:A}"
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
[[ -n "${precmd_functions[(r)_z_precmd]}" ]] || {
|
||||||
|
precmd_functions[$(($#precmd_functions+1))]=_z_precmd
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_z_zsh_tab_completion() {
|
||||||
|
# tab completion
|
||||||
|
local compl
|
||||||
|
read -l compl
|
||||||
|
reply=(${(f)"$(_z --complete "$compl")"})
|
||||||
|
}
|
||||||
|
compctl -U -K _z_zsh_tab_completion _z
|
||||||
|
elif complete >/dev/null 2>&1; then
|
||||||
|
# bash
|
||||||
|
# tab completion
|
||||||
|
complete -o filenames -C '_z --complete "$COMP_LINE"' ${_Z_CMD:-z}
|
||||||
|
[ "$_Z_NO_PROMPT_COMMAND" ] || {
|
||||||
|
# populate directory list. avoid clobbering other PROMPT_COMMANDs.
|
||||||
|
grep "_z --add" <<< "$PROMPT_COMMAND" >/dev/null || {
|
||||||
|
PROMPT_COMMAND="$PROMPT_COMMAND"$'\n''_z --add "$(command pwd '$_Z_RESOLVE_SYMLINKS' 2>/dev/null)" 2>/dev/null;'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
45
zshrc
Normal file
45
zshrc
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
# Path to your oh-my-zsh configuration.
|
||||||
|
ZSH=$HOME/.oh-my-zsh
|
||||||
|
|
||||||
|
# Set name of the theme to load.
|
||||||
|
# Look in ~/.oh-my-zsh/themes/
|
||||||
|
# Optionally, if you set this to "random", it'll load a random theme each
|
||||||
|
# time that oh-my-zsh is loaded.
|
||||||
|
ZSH_THEME="hybris"
|
||||||
|
|
||||||
|
# Example aliases
|
||||||
|
# alias zshconfig="mate ~/.zshrc"
|
||||||
|
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||||
|
|
||||||
|
# Set to this to use case-sensitive completion
|
||||||
|
# CASE_SENSITIVE="true"
|
||||||
|
|
||||||
|
# Comment this out to disable bi-weekly auto-update checks
|
||||||
|
DISABLE_AUTO_UPDATE="true"
|
||||||
|
|
||||||
|
# Uncomment to change how often before auto-updates occur? (in days)
|
||||||
|
# export UPDATE_ZSH_DAYS=13
|
||||||
|
|
||||||
|
# Uncomment following line if you want to disable colors in ls
|
||||||
|
# DISABLE_LS_COLORS="true"
|
||||||
|
|
||||||
|
# Uncomment following line if you want to disable autosetting terminal title.
|
||||||
|
DISABLE_AUTO_TITLE="true"
|
||||||
|
|
||||||
|
# Uncomment following line if you want to disable command autocorrection
|
||||||
|
# DISABLE_CORRECTION="true"
|
||||||
|
|
||||||
|
# Uncomment following line if you want red dots to be displayed while waiting for completion
|
||||||
|
COMPLETION_WAITING_DOTS="true"
|
||||||
|
|
||||||
|
# Uncomment following line if you want to disable marking untracked files under
|
||||||
|
# VCS as dirty. This makes repository status check for large repositories much,
|
||||||
|
# much faster.
|
||||||
|
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||||
|
|
||||||
|
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
|
||||||
|
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
|
||||||
|
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||||
|
plugins=(colored-man git ssh-agent web-search)
|
||||||
|
|
||||||
|
source $ZSH/oh-my-zsh.sh
|
||||||
Loading…
Reference in a new issue