Moved hub into the git plugin.

This commit is contained in:
Sorin Ionescu 2011-10-11 23:13:58 -04:00
parent 62fc8d802e
commit 60f39d8d91
55 changed files with 531 additions and 528 deletions

View File

@ -4,29 +4,29 @@ A handful of functions, auto-complete helpers, and stuff that makes you shout...
## Setup ## Setup
`oh-my-zsh` should work with any recent release of [ZSH](http://www.zsh.org), but the `oh-my-zsh` should work with any recent release of [Zsh](http://www.zsh.org), but the
minimum recommended version is 4.3.9. minimum recommended version is 4.3.9.
1. Clone the repository. 1. Clone the repository.
`git clone git://github.com/sorin-ionescu/oh-my-zsh.git ~/.oh-my-zsh` `git clone git://github.com/sorin-ionescu/oh-my-zsh.git ~/.oh-my-zsh`
2. Create a new ZSH configuration by copying the ZSH template provided. 2. Create a new Zsh configuration by copying the Zsh template provided.
**NOTE**: If you already have a `~/.zshrc` file, you should back it up with `cp **NOTE**: If you already have a `~/.zshrc` file, you should back it up with `cp
~/.zshrc{,.orig}` in case you want to go back to your original settings. ~/.zshrc{,.orig}` in case you want to go back to your original settings.
cp ~/.oh-my-zsh/templates/zshrc.template.zsh ~/.zshrc cp ~/.oh-my-zsh/templates/zshrc.template.zsh ~/.zshrc
3. Set ZSH as your default shell: 3. Set Zsh as your default shell:
`chsh -s /bin/zsh` `chsh -s /bin/zsh`
4. Start / restart ZSH by opening a new terminal window or tab. 4. Start / restart Zsh by opening a new terminal window or tab.
### Problems? ### Problems?
If you are not able to find certain commands after switching to *Oh My ZSH*, you need If you are not able to find certain commands after switching to *Oh My Zsh*, you need
to modify `PATH` in `~/.zshrc`, or better yet, in `~/functions/02.environment.zsh` to modify `PATH` in `~/.zshrc`, or better yet, in `~/functions/02.environment.zsh`
(may be subject to merge conflicts). (may be subject to merge conflicts).
@ -42,7 +42,7 @@ to modify `PATH` in `~/.zshrc`, or better yet, in `~/functions/02.environment.zs
## Useful ## Useful
The [ZSH Reference Card](http://www.bash2zsh.com/zsh_refcard/refcard.pdf) is tasty. The [Zsh Reference Card](http://www.bash2zsh.com/zsh_refcard/refcard.pdf) is tasty.
### Customization ### Customization
@ -51,7 +51,7 @@ If you have many related functions, you can organise them in a file in the
## Help out! ## Help out!
I am not a ZSH expert and suspect that there are improvements to be made. If you have I am not a Zsh expert and suspect that there are improvements to be made. If you have
ideas on how to make the configuration easier to maintain or improve the performance, ideas on how to make the configuration easier to maintain or improve the performance,
do not hesitate to fork and send pull requests! do not hesitate to fork and send pull requests!

13
functions/duh Normal file
View File

@ -0,0 +1,13 @@
# Displays human readable disk usage statistics.
function duh() {
(( $# == 0 )) && set -- *
if [[ "$OSTYPE" == linux* ]]; then
du -khsc "$@" | sort -h -r
else
du -kcs "$@" | awk '{ printf "%9.1fM %s\n", $1 / 1024, $2 } ' | sort -n -r
fi
}
compdef _du duh
duh "$@"

7
functions/reload Normal file
View File

@ -0,0 +1,7 @@
# Reloads ~/.zshrc.
local zshrc="$HOME/.zshrc"
if [[ -n "$1" ]]; then
zshrc="$1"
fi
source "$zshrc"

View File

@ -9,7 +9,7 @@ function check-bool {
} }
# Trap signals were generated with 'kill -l'. # Trap signals were generated with 'kill -l'.
# DEBUG, EXIT, and ZERR are ZSH signals. # DEBUG, EXIT, and ZERR are Zsh signals.
TRAP_SIGNALS=( TRAP_SIGNALS=(
ABRT ALRM BUS CHLD CONT EMT FPE HUP ILL INFO INT IO KILL PIPE PROF QUIT ABRT ALRM BUS CHLD CONT EMT FPE HUP ILL INFO INT IO KILL PIPE PROF QUIT
SEGV STOP SYS TERM TRAP TSTP TTIN TTOU URG USR1 USR2 VTALRM WINCH XCPU XFSZ SEGV STOP SYS TERM TRAP TSTP TTIN TTOU URG USR1 USR2 VTALRM WINCH XCPU XFSZ
@ -19,12 +19,12 @@ TRAP_SIGNALS=(
# Adds a function to a list to be called when a trap is triggered. # Adds a function to a list to be called when a trap is triggered.
function add-zsh-trap { function add-zsh-trap {
if (( $# < 2 )); then if (( $# < 2 )); then
echo "Usage: $0 type function" print "Usage: $0 type function"
return 1 return 1
fi fi
if [[ -z "$TRAP_SIGNALS[(r)$1]" ]]; then if [[ -z "$TRAP_SIGNALS[(r)$1]" ]]; then
echo "$0: unknown signal: $1" print "$0: unknown signal: $1"
return 1 return 1
fi fi

View File

@ -1,4 +1,11 @@
# Initializes OH MY ZSH. # Initializes Oh My Zsh.
# Check for the minimum supported version.
min_zsh_version=4.3.9
if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then
print "oh-my-zsh: The minimum supported Zsh version is $min_zsh_version."
fi
unset min_zsh_version
# Disable color in dumb terminals. # Disable color in dumb terminals.
if [[ "$TERM" == 'dumb' ]]; then if [[ "$TERM" == 'dumb' ]]; then
@ -7,10 +14,9 @@ fi
# Add functions to fpath. # Add functions to fpath.
fpath=( fpath=(
${0:h}/themes/*(/N) ${0:h}/themes/*(/FN)
${plugins:+${0:h}/plugins/${^plugins}} ${plugins:+${0:h}/plugins/${^plugins}/{functions,completions}(/FN)}
${0:h}/functions ${0:h}/{functions,completions}(/FN)
${0:h}/completions
$fpath $fpath
) )
@ -29,14 +35,28 @@ source "${0:h}/alias.zsh"
source "${0:h}/spectrum.zsh" source "${0:h}/spectrum.zsh"
source "${0:h}/utility.zsh" source "${0:h}/utility.zsh"
# Autoload Zsh function builtins.
autoload -Uz age
autoload -Uz zargs
autoload -Uz zcalc
autoload -Uz zmv
# Source plugins defined in ~/.zshrc. # Source plugins defined in ~/.zshrc.
for plugin in $plugins; do for plugin in "$plugins[@]"; do
if [[ -f "${0:h}/plugins/$plugin/init.zsh" ]]; then if [[ -f "${0:h}/plugins/$plugin/init.zsh" ]]; then
source "${0:h}/plugins/$plugin/init.zsh" source "${0:h}/plugins/$plugin/init.zsh"
fi fi
done done
unset plugin unset plugin plugins
unset plugins
# Autoload Oh My Zsh functions.
for fdir in "$fpath[@]"; do
if [[ "$fdir" == ${0:h}/(|*/)functions ]]; then
for afunction in $fdir/[^_.]*(N.:t); do
autoload -Uz $afunction
done
fi
done
# Set environment variables for launchd processes. # Set environment variables for launchd processes.
if [[ "$OSTYPE" == darwin* ]]; then if [[ "$OSTYPE" == darwin* ]]; then

View File

@ -82,7 +82,7 @@ if [[ "$KEYMAP" == (emacs|) ]]; then
fi fi
# Bind to history substring search plugin if enabled; # Bind to history substring search plugin if enabled;
# otherwise, bind to built-in ZSH history search. # otherwise, bind to built-in Zsh history search.
if (( $+widgets[history-incremental-pattern-search-backward] )); then if (( $+widgets[history-incremental-pattern-search-backward] )); then
bindkey "$keyinfo[Control]r" history-incremental-pattern-search-backward bindkey "$keyinfo[Control]r" history-incremental-pattern-search-backward
bindkey "$keyinfo[Control]s" history-incremental-pattern-search-forward bindkey "$keyinfo[Control]s" history-incremental-pattern-search-forward
@ -169,7 +169,7 @@ elif [[ "$KEYMAP" == 'vi' ]]; then
bindkey -M vicmd "G" end-of-history bindkey -M vicmd "G" end-of-history
# Bind to history substring search plugin if enabled; # Bind to history substring search plugin if enabled;
# otherwise, bind to built-in ZSH history search. # otherwise, bind to built-in Zsh history search.
if (( $+plugins[(er)history-substring-search] )); then if (( $+plugins[(er)history-substring-search] )); then
bindkey -M vicmd "k" history-substring-search-up bindkey -M vicmd "k" history-substring-search-up
bindkey -M vicmd "j" history-substring-search-down bindkey -M vicmd "j" history-substring-search-down
@ -194,7 +194,7 @@ elif [[ "$KEYMAP" == 'vi' ]]; then
bindkey -M viins "$keyinfo[Control]s" history-incremental-search-forward bindkey -M viins "$keyinfo[Control]s" history-incremental-search-forward
fi fi
else else
echo "oh-my-zsh: KEYMAP must be set 'emacs' or 'vi' but is set to '$KEYMAP'" >&2 print "oh-my-zsh: KEYMAP must be set 'emacs' or 'vi' but is set to '$KEYMAP'" >&2
return 1 return 1
fi fi

View File

@ -0,0 +1,68 @@
local remove_archive
local success
local file_name
local extract_dir
if (( $# == 0 )); then
print "Usage: extract [-option] [file ...]"
print
print "Options:"
print " -r, --remove Remove archive."
print
print "Report bugs to <sorin.ionescu@gmail.com>."
fi
remove_archive=1
if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then
remove_archive=0
shift
fi
while (( $# > 0 )); do
if [[ ! -f "$1" ]]; then
print "extract: '$1' is not a valid file" 1>&2
shift
continue
fi
success=0
file_name="${1:t}"
extract_dir="${file_name:r}"
case "$1" in
(*.tar.gz|*.tgz) tar xvzf "$1" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
(*.tar.xz|*.txz) tar --xz --help &> /dev/null \
&& tar --xz -xvf "$1" \
|| xzcat "$1" | tar xvf - ;;
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -xvf "$1" \
|| lzcat "$1" | tar xvf - ;;
(*.tar) tar xvf "$1" ;;
(*.gz) gunzip "$1" ;;
(*.bz2) bunzip2 "$1" ;;
(*.xz) unxz "$1" ;;
(*.lzma) unlzma "$1" ;;
(*.Z) uncompress "$1" ;;
(*.zip) unzip "$1" -d $extract_dir ;;
(*.rar) unrar e -ad "$1" ;;
(*.7z) 7za x "$1" ;;
(*.deb)
mkdir -p "$extract_dir/control"
mkdir -p "$extract_dir/data"
cd "$extract_dir"; ar vx "../${1}" > /dev/null
cd control; tar xzvf ../control.tar.gz
cd ../data; tar xzvf ../data.tar.gz
cd ..; rm *.tar.gz debian-binary
cd ..
;;
(*)
print "extract: '$1' cannot be extracted" 1>&2
success=1
;;
esac
(( success = $success > 0 ? $success : $? ))
(( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
shift
done

View File

@ -0,0 +1,45 @@
local verbose
if (( $# == 0 )); then
print "Usage: extract [-option] [file ...]"
print
print "Options:"
print " -v, --verbose Verbose archive listing."
print
print "Report bugs to <sorin.ionescu@gmail.com>."
fi
if [[ "$1" == "-v" ]] || [[ "$1" == "--verbose" ]]; then
verbose=0
shift
fi
while (( $# > 0 )); do
if [[ ! -f "$1" ]]; then
print "extract: '$1' is not a valid file" 1>&2
shift
continue
fi
case "$1" in
(*.tar.gz|*.tgz) tar t${verbose:+v}vzf "$1" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar t${verbose:+v}jf "$1" ;;
(*.tar.xz|*.txz) tar --xz --help &> /dev/null \
&& tar --xz -t${verbose:+v}f "$1" \
|| xzcat "$1" | tar t${verbose:+v}f - ;;
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -t${verbose:+v}f "$1" \
|| lzcat "$1" | tar x${verbose:+v}f - ;;
(*.tar) tar t${verbose:+v}f "$1" ;;
(*.zip) unzip -l${verbose:+v} "$1" ;;
(*.rar) unrar ${${verbose:+v}:-l} "$1" ;;
(*.7z) 7za l "$1" ;;
(*)
print "ls-archive: '$1' cannot be listed" 1>&2
success=1
;;
esac
shift
done

View File

@ -1,125 +0,0 @@
# ------------------------------------------------------------------------------
# FILE: extract.plugin.zsh
# DESCRIPTION: oh-my-zsh plugin file.
# AUTHOR: Sorin Ionescu <sorin.ionescu@gmail.com>
# VERSION: 1.0.2
# ------------------------------------------------------------------------------
function extract() {
local remove_archive
local success
local file_name
local extract_dir
if (( $# == 0 )); then
echo "Usage: extract [-option] [file ...]"
echo
echo "Options:"
echo " -r, --remove Remove archive."
echo
echo "Report bugs to <sorin.ionescu@gmail.com>."
fi
remove_archive=1
if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then
remove_archive=0
shift
fi
while (( $# > 0 )); do
if [[ ! -f "$1" ]]; then
echo "extract: '$1' is not a valid file" 1>&2
shift
continue
fi
success=0
file_name="$( basename "$1" )"
extract_dir="$( echo "$file_name" | sed "s/\.${1##*.}//g" )"
case "$1" in
(*.tar.gz|*.tgz) tar xvzf "$1" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
(*.tar.xz|*.txz) tar --xz --help &> /dev/null \
&& tar --xz -xvf "$1" \
|| xzcat "$1" | tar xvf - ;;
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -xvf "$1" \
|| lzcat "$1" | tar xvf - ;;
(*.tar) tar xvf "$1" ;;
(*.gz) gunzip "$1" ;;
(*.bz2) bunzip2 "$1" ;;
(*.xz) unxz "$1" ;;
(*.lzma) unlzma "$1" ;;
(*.Z) uncompress "$1" ;;
(*.zip) unzip "$1" -d $extract_dir ;;
(*.rar) unrar e -ad "$1" ;;
(*.7z) 7za x "$1" ;;
(*.deb)
mkdir -p "$extract_dir/control"
mkdir -p "$extract_dir/data"
cd "$extract_dir"; ar vx "../${1}" > /dev/null
cd control; tar xzvf ../control.tar.gz
cd ../data; tar xzvf ../data.tar.gz
cd ..; rm *.tar.gz debian-binary
cd ..
;;
(*)
echo "extract: '$1' cannot be extracted" 1>&2
success=1
;;
esac
(( success = $success > 0 ? $success : $? ))
(( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
shift
done
}
function ls-archive() {
local verbose
if (( $# == 0 )); then
echo "Usage: extract [-option] [file ...]"
echo
echo "Options:"
echo " -v, --verbose Verbose archive listing."
echo
echo "Report bugs to <sorin.ionescu@gmail.com>."
fi
if [[ "$1" == "-v" ]] || [[ "$1" == "--verbose" ]]; then
verbose=0
shift
fi
while (( $# > 0 )); do
if [[ ! -f "$1" ]]; then
echo "extract: '$1' is not a valid file" 1>&2
shift
continue
fi
case "$1" in
(*.tar.gz|*.tgz) tar t${verbose:+v}vzf "$1" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar t${verbose:+v}jf "$1" ;;
(*.tar.xz|*.txz) tar --xz --help &> /dev/null \
&& tar --xz -t${verbose:+v}f "$1" \
|| xzcat "$1" | tar t${verbose:+v}f - ;;
(*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
&& tar --lzma -t${verbose:+v}f "$1" \
|| lzcat "$1" | tar x${verbose:+v}f - ;;
(*.tar) tar t${verbose:+v}f "$1" ;;
(*.zip) unzip -l${verbose:+v} "$1" ;;
(*.rar) unrar ${${verbose:+v}:-l} "$1" ;;
(*.7z) 7za l "$1" ;;
(*)
echo "ls-archive: '$1' cannot be listed" 1>&2
success=1
;;
esac
shift
done
}

View File

@ -6,5 +6,5 @@ alias bl='b list'
alias bo='b open' alias bo='b open'
alias bp='b package' alias bp='b package'
alias bu='b update' alias bu='b update'
alias binit="bi && b package && echo '\nvendor/ruby' >>! .gitignore" alias binit="bi && b package && print '\nvendor/ruby' >>! .gitignore"

View File

@ -1,4 +1,4 @@
# Uses the command-not-found package ZSH support as seen in # Uses the command-not-found package Zsh support as seen in
# http://www.porcheron.info/command-not-found-for-zsh/ and # http://www.porcheron.info/command-not-found-for-zsh/ and
# installed in Ubuntu. # installed in Ubuntu.

View File

@ -0,0 +1,9 @@
# Create a simple script that can be used to 'duplicate' a system.
print '#!/bin/sh'"\n" > apt-copy.sh
list=$(perl -m'AptPkg::Cache' -e '$c=AptPkg::Cache->new; for (keys %$c){ push @a, $_ if $c->{$_}->{'CurrentState'} eq 'Installed';} print "$_ " for sort @a;')
print 'aptitude install '"$list\n" >> apt-copy.sh
chmod +x apt-copy.sh

View File

@ -0,0 +1,10 @@
# Kernel-package building shortcut.
MAKEFLAGS='' # Temporarily unset MAKEFLAGS ( '-j3' will fail ).
appendage='-custom' # This shows up in $ (uname -r ).
revision=$(date +"%Y%m%d") # This shows up in the .deb file name.
make-kpkg clean
time fakeroot make-kpkg --append-to-version "$appendage" --revision \
"$revision" kernel_image kernel_headers

View File

@ -1,5 +1,3 @@
# Debian ZSH Aliases and Functions
# Aliases # Aliases
alias as="aptitude -F \"* %p -> %d \n(%v/%V)\" --no-gui --disable-columns search" # Search package. alias as="aptitude -F \"* %p -> %d \n(%v/%V)\" --no-gui --disable-columns search" # Search package.
alias ad="sudo apt-get update" # Update packages lists. alias ad="sudo apt-get update" # Update packages lists.
@ -22,28 +20,3 @@ alias debc='time dpkg-buildpackage -rfakeroot -us -uc'
# Remove ALL kernel images and headers EXCEPT the one in use. # Remove ALL kernel images and headers EXCEPT the one in use.
alias kclean='su -c '\''aptitude remove -P ?and(~i~nlinux-(ima|hea) ?not(~n`uname -r`))'\'' root' alias kclean='su -c '\''aptitude remove -P ?and(~i~nlinux-(ima|hea) ?not(~n`uname -r`))'\'' root'
# Functions
# Create a simple script that can be used to 'duplicate' a system.
function apt-copy() {
print '#!/bin/sh'"\n" > apt-copy.sh
list=$(perl -m'AptPkg::Cache' -e '$c=AptPkg::Cache->new; for (keys %$c){ push @a, $_ if $c->{$_}->{'CurrentState'} eq 'Installed';} print "$_ " for sort @a;')
print 'aptitude install '"$list\n" >> apt-copy.sh
chmod +x apt-copy.sh
}
# Kernel-package building shortcut.
function dbb-build() {
MAKEFLAGS='' # Temporarily unset MAKEFLAGS ( '-j3' will fail ).
appendage='-custom' # This shows up in $ (uname -r ).
revision=$(date +"%Y%m%d") # This shows up in the .deb file name.
make-kpkg clean
time fakeroot make-kpkg --append-to-version "$appendage" --revision \
"$revision" kernel_image kernel_headers
}

View File

@ -1,7 +1,13 @@
# Get the latest Git completion. # Get the latest Git completion.
completion_file="${0:h}/_git" completion_file="${0:h}/completions/_git"
completion_file_url='http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=blob_plain;f=Completion/Unix/Command/_git;hb=HEAD' completion_file_url='http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=blob_plain;f=Completion/Unix/Command/_git;hb=HEAD'
if [[ ! -e "$completion_file" ]] && (( $+commands[git] )); then if [[ ! -e "$completion_file" ]] && (( $+commands[git] )); then
# Remove empty completions directory.
if [[ -d "${completion_file:h}"(/^F) ]]; then
rmdir "${completion_file:h}" 2> /dev/null
fi
if mkdir -p "${completion_file:h}" > /dev/null; then
if (( $+commands[curl] )); then if (( $+commands[curl] )); then
curl -L "$completion_file_url" -o "$completion_file" &> /dev/null &! curl -L "$completion_file_url" -o "$completion_file" &> /dev/null &!
fi fi
@ -10,6 +16,7 @@ if [[ ! -e "$completion_file" ]] && (( $+commands[git] )); then
wget -C "$completion_file_url" -O "$completion_file" &> /dev/null &! wget -C "$completion_file_url" -O "$completion_file" &> /dev/null &!
fi fi
fi fi
fi
unset completion_file unset completion_file
unset completion_file_url unset completion_file_url

View File

@ -0,0 +1,9 @@
# Gets the current branch.
local ref="$(git symbolic-ref HEAD 2> /dev/null)"
if [[ -n "$ref" ]]; then
print "${ref#refs/heads/}"
return 0
else
return 1
fi

View File

@ -0,0 +1,22 @@
# Open the GitHub repository in the browser.
local url=$(
git config -l \
| grep "remote.origin.url" \
| sed -En "s/remote.origin.url=(git|https?)(@|:\/\/)github.com(:|\/)(.+)\/(.+).git/https:\/\/github.com\/\4\/\5/p"
)
if [[ -n "$url" ]]; then
url="${url}/tree/${$(git-branch):-master}"
if (( $+commands[$BROWSER] )); then
"$BROWSER" "$url"
return 0
else
print "fatal: Browser not set or set to a non-existent browser." >&2
return 1
fi
else
print "fatal: Not a Git repository or origin remote not set." >&2
return 1
fi

View File

@ -1,22 +1,3 @@
# The default styles.
zstyle ':git-info:' action 'action:%s' # %s - Special action name (am, merge, rebase).
zstyle ':git-info:' added 'added:%a' # %a - Indicator to notify of added files.
zstyle ':git-info:' ahead 'ahead:%A' # %A - Indicator to notify of ahead branch.
zstyle ':git-info:' behind 'behind:%B' # %B - Indicator to notify of behind branch.
zstyle ':git-info:' branch '%b' # %b - Branch name.
zstyle ':git-info:' clean 'clean' # %C - Indicator to notify of clean branch.
zstyle ':git-info:' commit 'commit:%c' # %c - SHA-1 hash.
zstyle ':git-info:' deleted 'deleted:%d' # %d - Indicator to notify of deleted files.
zstyle ':git-info:' dirty 'dirty' # %D - Indicator to notify of dirty branch.
zstyle ':git-info:' modified 'modified:%m' # %m - Indicator to notify of modified files.
zstyle ':git-info:' remote '%R' # %R - Remote name.
zstyle ':git-info:' renamed 'renamed:%r' # %r - Indicator to notify of renamed files.
zstyle ':git-info:' stashed 'stashed:%S' # %S - Indicator to notify of stashed files.
zstyle ':git-info:' unmerged 'unmerged:%U' # %U - Indicator to notify of unmerged files.
zstyle ':git-info:' untracked 'untracked:%u' # %u - Indicator to notify of untracked files.
zstyle ':git-info:' prompt ' git:(%b %D%C)' # Left prompt.
zstyle ':git-info:' rprompt '' # Right prompt.
# Gets the Git special action (am, merge, rebase, etc.). # Gets the Git special action (am, merge, rebase, etc.).
# Borrowed from vcs_info and edited. # Borrowed from vcs_info and edited.
function _git-action() { function _git-action() {
@ -36,7 +17,7 @@ function _git-action() {
else else
action='am/rebase' action='am/rebase'
fi fi
echo "$action" print "$action"
return 0 return 0
fi fi
done done
@ -45,7 +26,7 @@ function _git-action() {
"${git_dir}/rebase-merge/interactive" \ "${git_dir}/rebase-merge/interactive" \
"${git_dir}/.dotest-merge/interactive"; do "${git_dir}/.dotest-merge/interactive"; do
if [[ -f "$action_dir" ]]; then if [[ -f "$action_dir" ]]; then
echo 'rebase-i' print 'rebase-i'
return 0 return 0
fi fi
done done
@ -54,23 +35,23 @@ function _git-action() {
"${git_dir}/rebase-merge" \ "${git_dir}/rebase-merge" \
"${git_dir}/.dotest-merge"; do "${git_dir}/.dotest-merge"; do
if [[ -d "$action_dir" ]]; then if [[ -d "$action_dir" ]]; then
echo 'rebase-m' print 'rebase-m'
return 0 return 0
fi fi
done done
if [[ -f "${git_dir}/MERGE_HEAD" ]]; then if [[ -f "${git_dir}/MERGE_HEAD" ]]; then
echo 'merge' print 'merge'
return 0 return 0
fi fi
if [[ -f "${git_dir}/CHERRY_PICK_HEAD" ]]; then if [[ -f "${git_dir}/CHERRY_PICK_HEAD" ]]; then
echo 'cherry-pick' print 'cherry-pick'
return 0 return 0
fi fi
if [[ -f "${git_dir}/BISECT_LOG" ]]; then if [[ -f "${git_dir}/BISECT_LOG" ]]; then
echo 'bisect' print 'bisect'
return 0 return 0
fi fi
@ -175,7 +156,7 @@ function git-info() {
elif [[ "$1" == [Oo][Ff][Ff] ]]; then elif [[ "$1" == [Oo][Ff][Ff] ]]; then
git config --bool prompt.showinfo false git config --bool prompt.showinfo false
else else
echo "Usage: $0 [ on | off ]" print "Usage: $0 [ on | off ]"
fi fi
return 0 return 0
fi fi
@ -355,3 +336,5 @@ function git-info() {
return 0 return 0
} }
git-info "$@"

View File

@ -0,0 +1,9 @@
# Gets the repository root.
local root="$(git rev-parse --show-toplevel 2> /dev/null)"
if [[ -n "$root" ]]; then
print "$root"
return 0
else
return 1
fi

View File

@ -1,5 +1,3 @@
# Aliases
# Hub by defunkt # Hub by defunkt
# https://github.com/defunkt/hub # https://github.com/defunkt/hub
if (( $+commands[hub] )); then if (( $+commands[hub] )); then

View File

@ -6,8 +6,8 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Source plugin files. # Source plugin files.
source "${0:h}/utility.zsh"
source "${0:h}/alias.zsh" source "${0:h}/alias.zsh"
source "${0:h}/info.zsh" source "${0:h}/hub.zsh"
source "${0:h}/style.zsh"
source "${0:h}/completion.zsh" source "${0:h}/completion.zsh"

18
plugins/git/style.zsh Normal file
View File

@ -0,0 +1,18 @@
# The default styles.
zstyle ':git-info:' action 'action:%s' # %s - Special action name (am, merge, rebase).
zstyle ':git-info:' added 'added:%a' # %a - Indicator to notify of added files.
zstyle ':git-info:' ahead 'ahead:%A' # %A - Indicator to notify of ahead branch.
zstyle ':git-info:' behind 'behind:%B' # %B - Indicator to notify of behind branch.
zstyle ':git-info:' branch '%b' # %b - Branch name.
zstyle ':git-info:' clean 'clean' # %C - Indicator to notify of clean branch.
zstyle ':git-info:' commit 'commit:%c' # %c - SHA-1 hash.
zstyle ':git-info:' deleted 'deleted:%d' # %d - Indicator to notify of deleted files.
zstyle ':git-info:' dirty 'dirty' # %D - Indicator to notify of dirty branch.
zstyle ':git-info:' modified 'modified:%m' # %m - Indicator to notify of modified files.
zstyle ':git-info:' remote '%R' # %R - Remote name.
zstyle ':git-info:' renamed 'renamed:%r' # %r - Indicator to notify of renamed files.
zstyle ':git-info:' stashed 'stashed:%S' # %S - Indicator to notify of stashed files.
zstyle ':git-info:' unmerged 'unmerged:%U' # %U - Indicator to notify of unmerged files.
zstyle ':git-info:' untracked 'untracked:%u' # %u - Indicator to notify of untracked files.
zstyle ':git-info:' prompt ' git:(%b %D%C)' # Left prompt.
zstyle ':git-info:' rprompt '' # Right prompt.

View File

@ -1,46 +0,0 @@
# Gets the current branch.
function git-branch() {
local ref="$(git symbolic-ref HEAD 2> /dev/null)"
if [[ -n "$ref" ]]; then
echo "${ref#refs/heads/}"
return 0
else
return 1
fi
}
# Gets the repository root.
function git-root() {
local root="$(git rev-parse --show-toplevel 2> /dev/null)"
if [[ -n "$root" ]]; then
echo "$root"
return 0
else
return 1
fi
}
# Open the GitHub repository in the browser.
function git-hub() {
local url=$(
git config -l \
| grep "remote.origin.url" \
| sed -En "s/remote.origin.url=(git|https?)(@|:\/\/)github.com(:|\/)(.+)\/(.+).git/https:\/\/github.com\/\4\/\5/p"
)
if [[ -n "$url" ]]; then
url="${url}/tree/${$(git-branch):-master}"
if (( $+commands[$BROWSER] )); then
"$BROWSER" "$url"
return 0
else
echo "fatal: Browser not set or set to a non-existent browser." >&2
return 1
fi
else
echo "fatal: Not a Git repository or origin remote not set." >&2
return 1
fi
}

View File

@ -1,4 +1,4 @@
To activate this script, load it into an interactive ZSH session: To activate this script, load it into an interactive Zsh session:
% source history-substring-search.zsh % source history-substring-search.zsh

View File

@ -147,9 +147,9 @@ if [[ $+functions[_zsh_highlight] -eq 0 ]]; then
# Rebind all ZLE widgets to make them invoke _zsh_highlights. # Rebind all ZLE widgets to make them invoke _zsh_highlights.
_zsh_highlight_bind_widgets() _zsh_highlight_bind_widgets()
{ {
# Load ZSH module zsh/zleparameter, needed to override user defined widgets. # Load Zsh module zsh/zleparameter, needed to override user defined widgets.
zmodload zsh/zleparameter 2>/dev/null || { zmodload zsh/zleparameter 2>/dev/null || {
echo 'zsh-syntax-highlighting: failed loading zsh/zleparameter.' >&2 print 'zsh-syntax-highlighting: failed loading zsh/zleparameter.' >&2
return 1 return 1
} }
@ -176,7 +176,7 @@ if [[ $+functions[_zsh_highlight] -eq 0 ]]; then
zle -N $cur_widget _zsh_highlight_widget_$cur_widget";; zle -N $cur_widget _zsh_highlight_widget_$cur_widget";;
# Default: unhandled case. # Default: unhandled case.
*) echo "zsh-syntax-highlighting: unhandled ZLE widget '$cur_widget'" >&2 ;; *) print "zsh-syntax-highlighting: unhandled ZLE widget '$cur_widget'" >&2 ;;
esac esac
done done
} }
@ -347,7 +347,7 @@ function _history-substring-search-down-buffer() {
function _history-substring-search-up-history() { function _history-substring-search-up-history() {
# #
# Behave like up in ZSH, except clear the $BUFFER # Behave like up in Zsh, except clear the $BUFFER
# when beginning of history is reached like in Fish. # when beginning of history is reached like in Fish.
# #
if [[ -z $_history_substring_search_query ]]; then if [[ -z $_history_substring_search_query ]]; then
@ -369,7 +369,7 @@ function _history-substring-search-up-history() {
function _history-substring-search-down-history() { function _history-substring-search-down-history() {
# #
# Behave like down-history in ZSH, except clear the # Behave like down-history in Zsh, except clear the
# $BUFFER when end of history is reached like in Fish. # $BUFFER when end of history is reached like in Fish.
# #
if [[ -z $_history_substring_search_query ]]; then if [[ -z $_history_substring_search_query ]]; then

View File

@ -3,7 +3,6 @@ alias kate='kate >/dev/null 2>&1' # Silent start.
# Functions # Functions
function kt() { function kt() {
cd "$1" cd "$1" && kate .
kate "$1"
} }

View File

@ -0,0 +1,4 @@
# Open the node api for your current version to the optional section.
# TODO: Make the sections easier to use.
open "http://nodejs.org/docs/$(node --version)/api/all.html#${1}"

View File

@ -9,9 +9,3 @@ else
fi fi
unset cache_file unset cache_file
# Open the node api for your current version to the optional section.
# TODO: Make the sections easier to use.
function node-docs() {
open "http://nodejs.org/docs/$(node --version)/api/all.html#$1"
}

10
plugins/osx/README.md Normal file
View File

@ -0,0 +1,10 @@
Provides the following commands.
- `tab` create a new tab (works in both _Terminal_ and _iTerm_).
- `pfd` print current _Finder_ directory.
- `pfs` print current _Finder_ selection.
- `cdf` cd to current _Finder_ directory.
- `pushdf` pushd to current _Finder_ directory.
- `ql` quick look at files.
- `manp` Open MAN pages in _Preview.app_.
- `trash` Move files and folders to _Trash_.

View File

@ -1,5 +0,0 @@
#compdef man-preview
#autoload
_man

View File

@ -0,0 +1,6 @@
osascript 2>/dev/null <<EOF
tell application "Finder"
return POSIX path of (target of window 1 as alias)
end tell
EOF

11
plugins/osx/functions/pfs Normal file
View File

@ -0,0 +1,11 @@
osascript 2>/dev/null <<EOF
set output to ""
tell application "Finder" to set the_selection to selection
set item_count to count the_selection
repeat with item_index from 1 to count the_selection
if item_index is less than item_count then set the_delimiter to "\n"
if item_index is item_count then set the_delimiter to ""
set output to output & ((item item_index of the_selection as alias)'s POSIX path) & the_delimiter
end repeat
EOF

34
plugins/osx/functions/tab Normal file
View File

@ -0,0 +1,34 @@
local command="cd \\\"$PWD\\\""
(( $# > 0 )) && command="${command}; $*"
the_app=$(
osascript 2>/dev/null <<EOF
tell application "System Events"
name of first item of (every process whose frontmost is true)
end tell
EOF
)
[[ "$the_app" == 'Terminal' ]] && {
osascript 2>/dev/null <<EOF
tell application "System Events"
tell process "Terminal" to keystroke "t" using command down
tell application "Terminal" to do script "${command}" in front window
end tell
EOF
}
[[ "$the_app" == 'iTerm' ]] && {
osascript 2>/dev/null <<EOF
tell application "iTerm"
set current_terminal to current terminal
tell current_terminal
launch session "Default Session"
set current_session to current session
tell current_session
write text "${command}"
end tell
end tell
end tell
EOF
}

View File

@ -0,0 +1,13 @@
local trash_dir="${HOME}/.Trash"
local trash_item
local item
for item in "${@}"; do
if [[ -e "${item}" ]] || [[ -L "${item}" ]]; then
trash_item="${trash_dir}/${item:t}"
if [[ -e "${trash_item}" ]] || [[ -L "${trash_item}" ]]; then
trash_item="${trash_item} $(date "+%H-%M-%S")"
fi
mv -f "${item}" "${trash_item}"
fi
done

View File

@ -1,103 +1,23 @@
# ------------------------------------------------------------------------------ # Sorin Ionescu <sorin.ionescu@gmail.com>
# FILE: osx.plugin.zsh
# DESCRIPTION: oh-my-zsh plugin file.
# AUTHOR: Sorin Ionescu <sorin.ionescu@gmail.com>
# VERSION: 1.0.2
# ------------------------------------------------------------------------------
# Change directory to the current Finder directory.
alias cdf='cd "$(pfd)"'
function tab() { # Push directory to the current Finder directory.
local command="cd \\\"$PWD\\\"" alias pushdf='pushd "$(pfd)"'
(( $# > 0 )) && command="${command}; $*"
the_app=$( # Open files in Quick Look.
osascript 2>/dev/null <<EOF function ql() {
tell application "System Events" (( $# > 0 )) && qlmanage -p "$@" &> /dev/null
name of first item of (every process whose frontmost is true)
end tell
EOF
)
[[ "$the_app" == 'Terminal' ]] && {
osascript 2>/dev/null <<EOF
tell application "System Events"
tell process "Terminal" to keystroke "t" using command down
tell application "Terminal" to do script "${command}" in front window
end tell
EOF
} }
[[ "$the_app" == 'iTerm' ]] && { # Open man pages in Preview.
osascript 2>/dev/null <<EOF function manp() {
tell application "iTerm" (( $# > 0 )) && man -t "$@" | open -f -a Preview
set current_terminal to current terminal
tell current_terminal
launch session "Default Session"
set current_session to current session
tell current_session
write text "${command}"
end tell
end tell
end tell
EOF
}
}
function pfd() {
osascript 2>/dev/null <<EOF
tell application "Finder"
return POSIX path of (target of window 1 as alias)
end tell
EOF
}
function pfs() {
osascript 2>/dev/null <<EOF
set output to ""
tell application "Finder" to set the_selection to selection
set item_count to count the_selection
repeat with item_index from 1 to count the_selection
if item_index is less than item_count then set the_delimiter to "\n"
if item_index is item_count then set the_delimiter to ""
set output to output & ((item item_index of the_selection as alias)'s POSIX path) & the_delimiter
end repeat
EOF
}
function cdf() {
cd "$(pfd)"
}
function pushdf() {
pushd "$(pfd)"
}
function quick-look() {
(( $# > 0 )) && qlmanage -p $* &>/dev/null &
}
function man-preview() {
man -t "$@" | open -f -a Preview
}
function trash() {
local trash_dir="${HOME}/.Trash"
local temp_ifs=$IFS
IFS=$'\n'
for item in "$@"; do
if [[ -e "$item" ]]; then
item_name="$(basename $item)"
if [[ -e "${trash_dir}/${item_name}" ]]; then
mv -f "$item" "${trash_dir}/${item_name} $(date "+%H-%M-%S")"
else
mv -f "$item" "${trash_dir}/"
fi
fi
done
IFS=$temp_ifs
} }
compdef _man manp
# Delete .DS_Store and __MACOSX directories.
function rm-osx-cruft() { function rm-osx-cruft() {
find ${@:-$PWD} \( -type f -name ".DS_Store" \) -o \( -type d -name '__MACOSX' \) -delete find "${@:-$PWD}" \( -type f -name '.DS_Store' \) -o \( -type d -name '__MACOSX' \) -print0 | xargs rm -rf
} }

View File

@ -0,0 +1,16 @@
# List disowned files.
tmp="${TMPDIR-/tmp}/pacman-disowned-$UID-$$"
db="$tmp/db"
fs="$tmp/fs"
mkdir "$tmp"
trap 'rm -rf "$tmp"' EXIT
pacman -Qlq | sort -u > "$db"
find /bin /etc /lib /sbin /usr \
! -name lost+found \
\( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
comm -23 "$fs" "$db"

View File

@ -0,0 +1,4 @@
# List explicitly installed packages.
sudo pacman -Qei $(pacman -Qu|cut -d" " -f 1) \
| awk ' BEGIN {FS=":"}/^Name/{printf("\033[1;36m%s\033[1;37m", $2)}/^Description/{print $2}'

View File

@ -1,26 +1,48 @@
# Archlinux ZSH Aliases and Functions # Arch Linux Zsh Aliases and Functions
# #
# Pacman Tips: # Pacman Tips:
# https://wiki.archlinux.org/index.php/Pacman_Tips # https://wiki.archlinux.org/index.php/Pacman_Tips
# Yaourt Aliases # Yaourt Aliases
if (( $+commands[yaourt] )); then if (( $+commands[yaourt] )); then
function arch-upgrade() { # Upgrade Arch Linux.
yaourt -Syu alias arch-upgrade='yaourt -Syu'
}
alias yaconf='yaourt -C' # Fix all configuration files with vimdiff. # Fix all configuration files with vimdiff.
alias yaupg='yaourt -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system. alias yaconf='yaourt -C'
alias yain='yaourt -S' # Install specific package(s) from the repositories.
alias yains='yaourt -U' # Install specific package(s) not from the repositories but from a file . # Synchronize with repositories before upgrading packages that are out of date on the local system.
alias yare='yaourt -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies. alias yaupg='yaourt -Syu'
alias yarem='yaourt -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies.
alias yarep='yaourt -Si' # Display information about a given package in the repositories. # Install specific package(s) from the repositories.
alias yareps='yaourt -Ss' # Search for package(s) in the repositories. alias yain='yaourt -S'
alias yaloc='yaourt -Qi' # Display information about a given package in the local database.
alias yalocs='yaourt -Qs' # Search for package(s) in the local database. # Install specific package(s) not from the repositories but from a file .
alias yamir='yaourt -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist alias yains='yaourt -U'
alias yainsd='yaourt -S --asdeps' # Install given package(s) as dependencies of another package
# Remove the specified package(s), retaining its configuration(s) and required dependencies.
alias yare='yaourt -R'
# Remove the specified package(s), its configuration(s) and unneeded dependencies.
alias yarem='yaourt -Rns'
# Display information about a given package in the repositories.
alias yarep='yaourt -Si'
# Search for package(s) in the repositories.
alias yareps='yaourt -Ss'
# Display information about a given package in the local database.
alias yaloc='yaourt -Qi'
# Search for package(s) in the local database.
alias yalocs='yaourt -Qs'
# Force refresh of all package lists after updating /etc/pacman.d/mirrorlist
alias yamir='yaourt -Syy'
# Install given package(s) as dependencies of another package
alias yainsd='yaourt -S --asdeps'
# Update and refresh the local package and ABS databases against repositories. # Update and refresh the local package and ABS databases against repositories.
if (( $+commands[abs] )); then if (( $+commands[abs] )); then
@ -29,25 +51,49 @@ if (( $+commands[yaourt] )); then
alias yaupd='yaourt -Sy' alias yaupd='yaourt -Sy'
fi fi
else else
function arch-upgrade() { # Upgrade Arch Linux.
sudo pacman -Syu alias arch-upgrade='sudo pacman -Syu'
}
fi fi
# Pacman Aliaases # Pacman Aliases
alias pacupg='sudo pacman -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system. # Synchronize with repositories before upgrading packages that are out of date on the local system.
alias pacin='sudo pacman -S' # Install specific package(s) from the repositories. alias pacupg='sudo pacman -Syu'
alias pacins='sudo pacman -U' # Install specific package not from the repositories but from a file.
alias pacre='sudo pacman -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies. # Install specific package(s) from the repositories.
alias pacrem='sudo pacman -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies. alias pacin='sudo pacman -S'
alias pacrep='pacman -Si' # Display information about a given package in the repositories.
alias pacreps='pacman -Ss' # Search for package(s) in the repositories. # Install specific package not from the repositories but from a file.
alias pacloc='pacman -Qi' # Display information about a given package in the local database. alias pacins='sudo pacman -U'
alias paclocs='pacman -Qs' # Search for package(s) in the local database.
alias pacinsd='sudo pacman -S --asdeps' # Install given package(s) as dependencies of another package. # Remove the specified package(s), retaining its configuration(s) and required dependencies.
alias pacmir='sudo pacman -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist. alias pacre='sudo pacman -R'
alias paclsorphans='sudo pacman -Qdt' # List orphan packages(s).
alias pacrmorphans='sudo pacman -Rs $(pacman -Qtdq)' # Remove orphan package(s). # Remove the specified package(s), its configuration(s) and unneeded dependencies.
alias pacrem='sudo pacman -Rns'
# Display information about a given package in the repositories.
alias pacrep='pacman -Si'
# Search for package(s) in the repositories.
alias pacreps='pacman -Ss'
# Display information about a given package in the local database.
alias pacloc='pacman -Qi'
# Search for package(s) in the local database.
alias paclocs='pacman -Qs'
# Install given package(s) as dependencies of another package.
alias pacinsd='sudo pacman -S --asdeps'
# Force refresh of all package lists after updating /etc/pacman.d/mirrorlist.
alias pacmir='sudo pacman -Syy'
# List orphan packages(s).
alias paclsorphans='sudo pacman -Qdt'
# Remove orphan package(s).
alias pacrmorphans='sudo pacman -Rs $(pacman -Qtdq)'
# Update and refresh the local package and ABS databases against repositories. # Update and refresh the local package and ABS databases against repositories.
if (( $+commands[abs] )); then if (( $+commands[abs] )); then
@ -56,27 +102,3 @@ else
alias pacupd='sudo pacman -Sy' alias pacupd='sudo pacman -Sy'
fi fi
# List explicitly installed packages.
function paclist() {
sudo pacman -Qei $(pacman -Qu|cut -d" " -f 1) \
| awk ' BEGIN {FS=":"}/^Name/{printf("\033[1;36m%s\033[1;37m", $2)}/^Description/{print $2}'
}
# List disowned files.
function pacdisowned() {
tmp="${TMPDIR-/tmp}/pacman-disowned-$UID-$$"
db="$tmp/db"
fs="$tmp/fs"
mkdir "$tmp"
trap 'rm -rf "$tmp"' EXIT
pacman -Qlq | sort -u > "$db"
find /bin /etc /lib /sbin /usr \
! -name lost+found \
\( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
comm -23 "$fs" "$db"
}

View File

@ -0,0 +1,12 @@
# Perl Global Substitution
if (( $# < 2 )); then
print "Usage: $0 find replace [file ...]" >&2
return 1
fi
local find="$1"
local replace="$2"
repeat 2 shift
perl -i.orig -pe 's/'"$find"'/'"$replace"'/g' "$@"

View File

@ -0,0 +1,11 @@
# Perl grep since 'grep -P' is terrible.
if (( $# < 1 )) ; then
print "Usage: $0 pattern [file ...]" >&2
return 1
fi
local pattern="$1"
shift
perl -nle 'print if /'"$pattern"'/;' "$@"

View File

@ -42,30 +42,3 @@ alias pbu='perlbrew use'
alias ple='perl -wlne' alias ple='perl -wlne'
alias pd='perldoc' alias pd='perldoc'
# Perl Global Substitution
function pgs() {
if (( $# < 2 )) ; then
echo "Usage: $0 find replace [file ...]" >&2
return 1
fi
local find="$1"
local replace="$2"
repeat 2 shift
perl -i.orig -pe 's/'"$find"'/'"$replace"'/g' "$@"
}
# Perl grep since 'grep -P' is terrible.
function prep() {
if (( $# < 1 )) ; then
echo "Usage: $0 pattern [file ...]" >&2
return 1
fi
local pattern="$1"
shift
perl -nle 'print if /'"$pattern"'/;' "$@"
}

View File

@ -6,7 +6,7 @@ if [[ "$OSTYPE" == darwin* ]]; then
# gem is slow; cache its output. # gem is slow; cache its output.
cache_file="${0:h}/cache.zsh" cache_file="${0:h}/cache.zsh"
if [[ ! -f "$cache_file" ]]; then if [[ ! -f "$cache_file" ]]; then
echo export GEM_PATH=$GEM_HOME:$(gem env gempath) >! "$cache_file" print export GEM_PATH=$GEM_HOME:$(gem env gempath) >! "$cache_file"
source "$cache_file" source "$cache_file"
else else
source "$cache_file" source "$cache_file"

View File

@ -28,13 +28,13 @@ function _ssh-agent-start() {
local -a identities local -a identities
# Start ssh-agent and setup environment. # Start ssh-agent and setup environment.
/usr/bin/env ssh-agent | sed 's/^echo/#echo/' > "${_ssh_agent_env}" /usr/bin/env ssh-agent | sed 's/^print/#print/' > "${_ssh_agent_env}"
chmod 600 "${_ssh_agent_env}" chmod 600 "${_ssh_agent_env}"
source "${_ssh_agent_env}" > /dev/null source "${_ssh_agent_env}" > /dev/null
# Load identies. # Load identies.
zstyle -a :omz:plugins:ssh-agent identities identities zstyle -a :omz:plugins:ssh-agent identities identities
echo starting... print starting...
/usr/bin/ssh-add "$HOME/.ssh/${^identities}" /usr/bin/ssh-add "$HOME/.ssh/${^identities}"
} }

View File

@ -9,7 +9,6 @@ alias mr='mate CHANGELOG app config db lib public script spec test'
# Functions # Functions
function tm() { function tm() {
cd $1 cd "$1" && mate .
mate $1
} }

View File

@ -0,0 +1,13 @@
local config_file="$HOME/.wakeonlan/$1"
if [[ ! -f "$config_file" ]]; then
print "$0: $1: There is no such device file." >&2
return 1
fi
if (( ! $+commands[wakeonlan] )); then
print "$0: Can't find wakeonlan. Is it installed?" >&2
return 1
fi
wakeonlan -f "$config_file"

View File

@ -1,15 +0,0 @@
function wake() {
local config_file="$HOME/.wakeonlan/$1"
if [[ ! -f "$config_file" ]]; then
echo "$0: $1: There is no such device file." >&2
return 1
fi
if (( ! $+commands[wakeonlan] )); then
echo "$0: Can't find wakeonlan. Is it installed?" >&2
return 1
fi
wakeonlan -f "$config_file"
}

View File

@ -1,4 +1,4 @@
# A script to make using 256 colors in ZSH less painful. # A script to make using 256 colors in Zsh less painful.
# P.C. Shyamshankar <sykora@lucentbeing.com> # P.C. Shyamshankar <sykora@lucentbeing.com>
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>

View File

@ -1,4 +1,4 @@
# Path to oh-my-zsh. # Set the path to Oh My Zsh.
OMZ="$HOME/.oh-my-zsh" OMZ="$HOME/.oh-my-zsh"
# Set the key mapping style to 'emacs' or 'vi'. # Set the key mapping style to 'emacs' or 'vi'.
@ -23,7 +23,7 @@ COMPLETION_INDICATOR='false'
# Example: plugins=(git lighthouse rails ruby textmate) # Example: plugins=(git lighthouse rails ruby textmate)
plugins=(git) plugins=(git)
# This will make you scream: OH MY ZSH! # This will make you shout: OH MY ZSHELL!
source "$OMZ/init.zsh" source "$OMZ/init.zsh"
# Load the prompt theme (type prompt -l to list all themes). # Load the prompt theme (type prompt -l to list all themes).

View File

@ -1,5 +1,5 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Prompt for ZSH: # Prompt for Zsh:
# * One line. # * One line.
# * VCS info on the right prompt. # * VCS info on the right prompt.
# * Only shows the path on the left prompt by default. # * Only shows the path on the left prompt by default.

View File

@ -1,7 +1,7 @@
# Prompt style and colors based on Steve Losh's Prose theme: # Prompt style and colors based on Steve Losh's Prose theme:
# http://github.com/sjl/oh-my-zsh/blob/master/themes/prose.zsh-theme # http://github.com/sjl/oh-my-zsh/blob/master/themes/prose.zsh-theme
# #
# vcs_info modifications from Bart Trojanowski's zsh prompt: # vcs_info modifications from Bart Trojanowski's Zsh prompt:
# http://www.jukie.net/bart/blog/pimping-out-zsh-prompt # http://www.jukie.net/bart/blog/pimping-out-zsh-prompt
# #
# Git untracked files modification from Brian Carper: # Git untracked files modification from Brian Carper:
@ -9,7 +9,7 @@
function virtualenv_info() { function virtualenv_info() {
if [[ -n "$VIRTUAL_ENV" ]]; then if [[ -n "$VIRTUAL_ENV" ]]; then
echo '('`basename $VIRTUAL_ENV`') ' print "(${VIRTUAL_ENV:t}) "
fi fi
} }

View File

@ -1,84 +1,46 @@
# Lists the ten most used commands. # Lists the ten most used commands.
function history-stat() { alias history-stat="history | awk '{print \$2}' | sort | uniq -c | sort -n -r | head"
history | awk '{print $2}' | sort | uniq -c | sort -n -r | head
} # Serves a directory via HTTP.
alias http-serve='python -m SimpleHTTPServer'
# Makes a directory and changes to it. # Makes a directory and changes to it.
function mkdcd() { function mkdcd() {
mkdir -p "$@" [[ -n "$1" ]] && mkdir -p "$1" && cd "$1"
cd "$argv[-1]"
} }
compdef _mkdir mkdcd compdef _mkdir mkdcd
# Changes to a directory and lists its contents. # Changes to a directory and lists its contents.
function cdll() { function cdll() {
builtin cd "$@" builtin cd "$1" && ll
ll
} }
compdef _cd cdll compdef _cd cdll
# Pushes an entry onto the directory stack and lists its contents. # Pushes an entry onto the directory stack and lists its contents.
function pushdll() { function pushdll() {
builtin pushd "$@" builtin pushd "$1" && ll
ll
} }
compdef _cd pushdll compdef _cd pushdll
# Pops an entry off the directory stack and lists its contents. # Pops an entry off the directory stack and lists its contents.
function popdll() { function popdll() {
builtin popd "$@" builtin popd "$1" && ll
ll
} }
compdef _cd popdll compdef _cd popdll
# Gets ownership.
function gown() {
sudo chown -R "${USER}" "${1:-.}"
}
# Reloads ~/.zshrc.
function reload() {
local zshrc="$HOME/.zshrc"
if [[ -n "$1" ]]; then
zshrc="$1"
fi
source "$zshrc"
}
# Provides a simple calculator.
function calc() {
echo "scale=4; $@" | bc -l
}
# Displays human readable disk usage statistics.
function duh() {
(( $# == 0 )) && set -- *
if [[ "$OSTYPE" == linux* ]]; then
du -khsc "$@" | sort -h -r
else
du -kcs "$@" | awk '{ printf "%9.1fM %s\n", $1 / 1024, $2 } ' | sort -n -r
fi
}
compdef _du duh
# Prints columns 1 2 3 ... n. # Prints columns 1 2 3 ... n.
function slit() { function slit() {
awk "{ print $(for n; do echo -n "\$$n,"; done | sed 's/,$//') }" awk "{ print $(for n; do print -n "\$$n,"; done | sed 's/,$//') }"
} }
# Displays user owned process status. # Displays user owned process status.
function pmine() { function pmine() {
ps "$@" -u "$USER" -o pid,%cpu,%mem,command ps "$@" -U "$USER" -o pid,%cpu,%mem,command
} }
compdef _ps pmine compdef _ps pmine
# Finds files and executes a command on them. # Finds files and executes a command on them.
function findexec() { function find-exec() {
find . -type f -iname "*${1:-}*" -exec "${2:-file}" '{}' \; find . -type f -iname "*${1:-}*" -exec "${2:-file}" '{}' \;
} }
# Serves a directory via HTTP.
function httpserve() {
python -m SimpleHTTPServer "$@"
}