Merge remote-tracking branch 'robbyrussell/master'

* robbyrussell/master: (75 commits)
  Update custom location command and fix code format
  Fix typo.
  Fix backwards logic in uninstaller once and for all
  Refactor for method in plugins/rake-fast/rake-fast.plugin.zsh
  Fix conditional in uninstall prompt
  Fix syntax error in confirmation prompt of uninstall.sh
  Fix syntax error in #4515 on certain shells
  Revert "Make install script safer"
  Fix "be" -> "b" typo in coffee plugin README.md.
  Make install script safer
  [FIX #4525]: Fix typo
  Fixd bug for pyenv plugin
  Fix install.sh/upgrade.sh for tput-less systems
  Check for git before trying to upgrade, as per #4504
  Enable pyenv rehash
  Init pyenv virtualenvs too
  Add option '--port' to 'rails server' alias.
  Add an alias for upstream
  autoenv: actually source autoenv once located
  add alias to sort by version
  ...
This commit is contained in:
Carlos Cardoso 2015-10-24 00:32:02 -04:00
commit 049724070a
45 changed files with 521 additions and 275 deletions

View file

@ -5,7 +5,7 @@ Oh My Zsh is an open source, community-driven framework for managing your [zsh](
__Oh My Zsh is a way of life!__ Once installed, your terminal prompt will become the talk of the town _or your money back!_ Each time you interact with your command prompt, you'll be able take advantage of the hundreds of bundled plugins and pretty themes. Strangers will come up to you in cafés and ask you, _"that is amazing. are you some sort of genius?"_ Finally, you'll begin to get the sort of attention that you always felt that you deserved. ...or maybe you'll just use the time that you saved to start flossing more often. __Oh My Zsh is a way of life!__ Once installed, your terminal prompt will become the talk of the town _or your money back!_ Each time you interact with your command prompt, you'll be able take advantage of the hundreds of bundled plugins and pretty themes. Strangers will come up to you in cafés and ask you, _"that is amazing. are you some sort of genius?"_ Finally, you'll begin to get the sort of attention that you always felt that you deserved. ...or maybe you'll just use the time that you saved to start flossing more often.
To learn more, visit http://ohmyz.sh and/or follow [ohmyzsh](https://twitter.com/ohmyzsh) on Twitter. To learn more, visit [ohmyz.sh](http://ohmyz.sh) and/or follow [ohmyzsh](https://twitter.com/ohmyzsh) on Twitter.
## Getting Started ## Getting Started
@ -25,11 +25,15 @@ Oh My Zsh is installed by running one of the following commands in your terminal
#### via curl #### via curl
`sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"` ```shell
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
```
#### via wget #### via wget
`sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"` ```shell
sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
```
## Using Oh My Zsh ## Using Oh My Zsh
@ -100,7 +104,7 @@ The default location is `~/.oh-my-zsh` (hidden in your home directory)
If you'd like to change the install directory with the `ZSH` environment variable, either by running `export ZSH=/your/path` before installing, or by setting it before the end of the install pipeline like this: If you'd like to change the install directory with the `ZSH` environment variable, either by running `export ZSH=/your/path` before installing, or by setting it before the end of the install pipeline like this:
```shell ```shell
curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | ZSH=~/.dotfiles/zsh sh export ZSH="~/.dotfiles/oh-my-zsh"; sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
``` ```
#### Manual Installation #### Manual Installation

86
lib/clipboard.zsh Normal file
View file

@ -0,0 +1,86 @@
# System clipboard integration
#
# This file has support for doing system clipboard copy and paste operations
# from the command line in a generic cross-platform fashion.
#
# On OS X and Windows, the main system clipboard or "pasteboard" is used. On other
# Unix-like OSes, this considers the X Windows CLIPBOARD selection to be the
# "system clipboard", and the X Windows `xclip` command must be installed.
# clipcopy - Copy data to clipboard
#
# Usage:
#
# <command> | clipcopy - copies stdin to clipboard
#
# clipcopy <file> - copies a file's contents to clipboard
#
function clipcopy() {
emulate -L zsh
local file=$1
if [[ $OSTYPE == darwin* ]]; then
if [[ -z $file ]]; then
pbcopy
else
cat $file | pbcopy
fi
elif [[ $OSTYPE == cygwin* ]]; then
if [[ -z $file ]]; then
cat > /dev/clipboard
else
cat $file > /dev/clipboard
fi
else
if which xclip &>/dev/null; then
if [[ -z $file ]]; then
xclip -in -selection clipboard
else
xclip -in -selection clipboard $file
fi
elif which xsel &>/dev/null; then
if [[ -z $file ]]; then
xsel --clipboard --input
else
cat "$file" | xsel --clipboard --input
fi
else
print "clipcopy: Platform $OSTYPE not supported or xclip/xsel not installed" >&2
return 1
fi
fi
}
# clippaste - "Paste" data from clipboard to stdout
#
# Usage:
#
# clippaste - writes clipboard's contents to stdout
#
# clippaste | <command> - pastes contents and pipes it to another process
#
# clippaste > <file> - paste contents to a file
#
# Examples:
#
# # Pipe to another process
# clippaste | grep foo
#
# # Paste to a file
# clippaste > file.txt
function clippaste() {
emulate -L zsh
if [[ $OSTYPE == darwin* ]]; then
pbpaste
elif [[ $OSTYPE == cygwin* ]]; then
cat /dev/clipboard
else
if which xclip &>/dev/null; then
xclip -out -selection clipboard
elif which xsel &>/dev/null; then
xsel --clipboard --output
else
print "clipcopy: Platform $OSTYPE not supported or xclip/xsel not installed" >&2
return 1
fi
fi
}

View file

@ -52,6 +52,9 @@
# * Consider whether to move default output file location to TMPDIR. More robust # * Consider whether to move default output file location to TMPDIR. More robust
# but less user friendly. # but less user friendly.
# #
autoload -Uz is-at-least
function omz_diagnostic_dump() { function omz_diagnostic_dump() {
emulate -L zsh emulate -L zsh
@ -247,7 +250,7 @@ function _omz_diag_dump_one_big_text() {
function _omz_diag_dump_check_core_commands() { function _omz_diag_dump_check_core_commands() {
builtin echo "Core command check:" builtin echo "Core command check:"
local redefined name builtins externals local redefined name builtins externals reserved_words
redefined=() redefined=()
# All the zsh non-module builtin commands # All the zsh non-module builtin commands
# These are taken from the zsh reference manual for 5.0.2 # These are taken from the zsh reference manual for 5.0.2
@ -255,17 +258,32 @@ function _omz_diag_dump_check_core_commands() {
# (For back-compatibility, if any of these are newish, they should be removed, # (For back-compatibility, if any of these are newish, they should be removed,
# or at least made conditional on the version of the current running zsh.) # or at least made conditional on the version of the current running zsh.)
# "history" is also excluded because OMZ is known to redefine that # "history" is also excluded because OMZ is known to redefine that
reserved_words=( do done esac then elif else fi for case if while function
repeat time until select coproc nocorrect foreach end '!' '[[' '{' '}'
)
builtins=( alias autoload bg bindkey break builtin bye cd chdir command builtins=( alias autoload bg bindkey break builtin bye cd chdir command
comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comparguments compcall compctl compdescribe compfiles compgroups compquote comptags
comptry compvalues continue declare dirs disable disown echo echotc echoti emulate comptry compvalues continue dirs disable disown echo echotc echoti emulate
enable eval exec exit export false fc fg float functions getln getopts hash enable eval exec exit false fc fg functions getln getopts hash
integer jobs kill let limit local log logout noglob popd print printf jobs kill let limit log logout noglob popd print printf
pushd pushln pwd r read readonly rehash return sched set setopt shift pushd pushln pwd r read rehash return sched set setopt shift
source suspend test times trap true ttyctl type typeset ulimit umask unalias source suspend test times trap true ttyctl type ulimit umask unalias
unfunction unhash unlimit unset unsetopt vared wait whence where which zcompile unfunction unhash unlimit unset unsetopt vared wait whence where which zcompile
zle zmodload zparseopts zregexparse zstyle ) zle zmodload zparseopts zregexparse zstyle )
if is-at-least 5.1; then
reserved_word+=( declare export integer float local readonly typeset )
else
builtins+=( declare export integer float local readonly typeset )
fi
builtins_fatal=( builtin command local ) builtins_fatal=( builtin command local )
externals=( zsh ) externals=( zsh )
for name in $reserved_words; do
if [[ $(builtin whence -w $name) != "$name: reserved" ]]; then
builtin echo "reserved word '$name' has been redefined"
builtin which $name
redefined+=$name
fi
done
for name in $builtins; do for name in $builtins; do
if [[ $(builtin whence -w $name) != "$name: builtin" ]]; then if [[ $(builtin whence -w $name) != "$name: builtin" ]]; then
builtin echo "builtin '$name' has been redefined" builtin echo "builtin '$name' has been redefined"

View file

@ -38,7 +38,7 @@ git_remote_status() {
if [ $ahead -eq 0 ] && [ $behind -eq 0 ] if [ $ahead -eq 0 ] && [ $behind -eq 0 ]
then then
echo "$ZSH_THEME_GIT_PROMPT_EQUAL_REMOTE" git_remote_status="$ZSH_THEME_GIT_PROMPT_EQUAL_REMOTE"
elif [ $ahead -gt 0 ] && [ $behind -eq 0 ] elif [ $ahead -gt 0 ] && [ $behind -eq 0 ]
then then
git_remote_status="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE" git_remote_status="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE"

View file

@ -11,7 +11,7 @@ if grep-flag-available --color=auto; then
fi fi
# ignore VCS folders (if the necessary grep flags are available) # ignore VCS folders (if the necessary grep flags are available)
VCS_FOLDERS="{.bzr,.cvs,.git,.hg,.svn}" VCS_FOLDERS="{.bzr,CVS,.git,.hg,.svn}"
if grep-flag-available --exclude-dir=.cvs; then if grep-flag-available --exclude-dir=.cvs; then
GREP_OPTIONS+=" --exclude-dir=$VCS_FOLDERS" GREP_OPTIONS+=" --exclude-dir=$VCS_FOLDERS"

View file

@ -1,10 +1,19 @@
## Load smart urls if available ## Load smart urls if available
for d in $fpath; do # bracketed-paste-magic is known buggy in zsh 5.1.1 (only), so skip it there; see #4434
if [[ -e "$d/url-quote-magic" ]]; then autoload -Uz is-at-least
autoload -U url-quote-magic if [[ $ZSH_VERSION != 5.1.1 ]]; then
zle -N self-insert url-quote-magic for d in $fpath; do
fi if [[ -e "$d/url-quote-magic" ]]; then
done if is-at-least 5.1; then
autoload -Uz bracketed-paste-magic
zle -N bracketed-paste bracketed-paste-magic
fi
autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
break
fi
done
fi
## jobs ## jobs
setopt long_list_jobs setopt long_list_jobs
@ -18,7 +27,11 @@ alias _='sudo'
alias please='sudo' alias please='sudo'
## more intelligent acking for ubuntu users ## more intelligent acking for ubuntu users
alias afind='ack-grep -il' if which ack-grep &> /dev/null; then
alias afind='ack-grep -il'
else
alias afind='ack -il'
fi
# only define LC_CTYPE if undefined # only define LC_CTYPE if undefined
if [[ -z "$LC_CTYPE" && -z "$LC_ALL" ]]; then if [[ -z "$LC_CTYPE" && -z "$LC_ALL" ]]; then

View file

@ -11,6 +11,8 @@ fpath=($ZSH/functions $ZSH/completions $fpath)
# Load all stock functions (from $fpath files) called below. # Load all stock functions (from $fpath files) called below.
autoload -U compaudit compinit autoload -U compaudit compinit
: ${ZSH_DISABLE_COMPFIX:=true}
# Set ZSH_CUSTOM to the path where your custom config files # Set ZSH_CUSTOM to the path where your custom config files
# and plugins exists, or else we will use the default custom/ # and plugins exists, or else we will use the default custom/
if [[ -z "$ZSH_CUSTOM" ]]; then if [[ -z "$ZSH_CUSTOM" ]]; then
@ -62,13 +64,17 @@ if [ -z "$ZSH_COMPDUMP" ]; then
ZSH_COMPDUMP="${ZDOTDIR:-${HOME}}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}" ZSH_COMPDUMP="${ZDOTDIR:-${HOME}}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
fi fi
# If completion insecurities exist, warn the user without enabling completions. if [[ $ZSH_DISABLE_COMPFIX != true ]]; then
if ! compaudit &>/dev/null; then # If completion insecurities exist, warn the user without enabling completions.
# This function resides in the "lib/compfix.zsh" script sourced above. if ! compaudit &>/dev/null; then
handle_completion_insecurities # This function resides in the "lib/compfix.zsh" script sourced above.
# Else, enable and cache completions to the desired file. handle_completion_insecurities
# Else, enable and cache completions to the desired file.
else
compinit -d "${ZSH_COMPDUMP}"
fi
else else
compinit -d "${ZSH_COMPDUMP}" compinit -i -d "${ZSH_COMPDUMP}"
fi fi
# Load all of the plugins that were defined in ~/.zshrc # Load all of the plugins that were defined in ~/.zshrc

View file

@ -1,23 +0,0 @@
## atom
This plugin makes "at" a useful function for invoking the Atom Editor.
Originally by Github user [aforty](https://github.com/aforty) for OSX, modified to alias 'at' to 'atom' for Linux, since atom already works on the terminal for Linux, and calling 'at' in a non-OSX environment should still work.
### Requirements
* [Atom](https://atom.io/)
### Usage
* If `at` command is called without an argument, launch Atom
* If `at` is passed a directory, open it in Atom
* If `at` is passed a file, open it in Atom
### Examples
* Open the current dir in atom: `at .`
* Open another dir in atom: `at path/to/folder`
* Open a file: `at filename.extension`

View file

@ -1,22 +0,0 @@
# Gets OS Type
unamestr=$(uname -s)
# If OSX
if [[ "$unamestr" == 'Darwin' ]]; then
local _atom_paths > /dev/null 2>&1
_atom_paths=(
"$HOME/Applications/Atom.app"
"/Applications/Atom.app"
)
for _atom_path in $_atom_paths; do
if [[ -a $_atom_path ]]; then
alias at="open -a '$_atom_path'"
break
fi
done
# If Linux
elif [[ "$unamestr" == 'Linux' ]]; then
# Alerts the user if 'atom' is not a found command.
type atom >/dev/null 2>&1 && alias at="atom" || { echo >&2 "You have enabled the atom oh-my-zsh plugin on Linux, but atom is not a recognized command. Please make sure you have it installed before using this plugin."; }
fi

View file

@ -1,12 +1,26 @@
# Activates autoenv or reports its failure # Activates autoenv or reports its failure
if ! source $HOME/.autoenv/activate.sh 2>/dev/null; then () {
echo '-------- AUTOENV ---------' if ! type autoenv_init >/dev/null; then
echo 'Could not find ~/.autoenv/activate.sh.' for d (~/.autoenv /usr/local/opt/autoenv); do
echo 'Please check if autoenv is correctly installed.' if [[ -e $d/activate.sh ]]; then
echo 'In the meantime the autoenv plugin is DISABLED.' autoenv_dir=$d
echo '--------------------------' break
return 1 fi
done
if [[ -z $autoenv_dir ]]; then
cat <<END >&2
-------- AUTOENV ---------
Could not locate autoenv installation.
Please check if autoenv is correctly installed.
In the meantime the autoenv plugin is DISABLED.
--------------------------
END
return 1
fi
source $autoenv_dir/activate.sh
fi fi
}
[[ $? != 0 ]] && return $?
# The use_env call below is a reusable command to activate/create a new Python # The use_env call below is a reusable command to activate/create a new Python
# virtualenv, requiring only a single declarative line of code in your .env files. # virtualenv, requiring only a single declarative line of code in your .env files.

View file

@ -14,7 +14,7 @@ _arguments -C \
_cap_tasks() { _cap_tasks() {
if [[ -f config/deploy.rb || -f Capfile ]]; then if [[ -f config/deploy.rb || -f Capfile ]]; then
if [[ ! -f .cap_tasks~ ]]; then if [[ ! -f .cap_tasks~ ]]; then
shipit -v --tasks | sed 's/\(\[\)\(.*\)\(\]\)/\2:/' | awk '{command=$2; $1=$2=$3=""; gsub(/^[ \t\r\n]+/, "", $0); gsub(":", "\\:", command); print command"["$0"]"}' > .cap_tasks~ shipit --tasks | sed 's/\(\[\)\(.*\)\(\]\)/\2:/' | awk '{command=$2; $1=$2=$3=""; gsub(/^[ \t\r\n]+/, "", $0); gsub(":", "\\:", command); print command"["$0"]"}' > .cap_tasks~
fi fi
OLD_IFS=$IFS OLD_IFS=$IFS

View file

@ -24,7 +24,7 @@ _homebrew-installed() {
} }
_chruby-from-homebrew-installed() { _chruby-from-homebrew-installed() {
[ -r $(brew --prefix chruby)] &> /dev/null [ -r $(brew --prefix chruby) ] &> /dev/null
} }
_ruby-build_installed() { _ruby-build_installed() {

View file

@ -1,6 +1,28 @@
if [ ! -f $ZSH/plugins/chucknorris/fortunes/chucknorris.dat ]; then # chucknorris: Chuck Norris fortunes
strfile $ZSH/plugins/chucknorris/fortunes/chucknorris $ZSH/plugins/chucknorris/fortunes/chucknorris.dat
# Automatically generate or update Chuck's compiled fortune data file
# $0 must be used outside a local function. This variable name is unlikly to collide.
CHUCKNORRIS_PLUGIN_DIR=${0:h}
() {
local DIR=$CHUCKNORRIS_PLUGIN_DIR/fortunes
if [[ ! -f $DIR/chucknorris.dat ]] || [[ $DIR/chucknorris.dat -ot $DIR/chucknorris ]]; then
# For some reason, Cygwin puts strfile in /usr/sbin, which is not on the path by default
local strfile=strfile
if ! which strfile &>/dev/null && [[ -f /usr/sbin/strfile ]]; then
strfile=/usr/sbin/strfile
fi
if which $strfile &> /dev/null; then
$strfile $DIR/chucknorris $DIR/chucknorris.dat >/dev/null
else
echo "[oh-my-zsh] chucknorris depends on strfile, which is not installed" >&2
echo "[oh-my-zsh] strfile is often provided as part of the 'fortune' package" >&2
fi
fi fi
alias chuck="fortune -a $ZSH/plugins/chucknorris/fortunes" # Aliases
alias chuck="fortune -a $DIR"
alias chuck_cow="chuck | cowthink" alias chuck_cow="chuck | cowthink"
}
unset CHUCKNORRIS_PLUGIN_DIR

View file

@ -17,9 +17,11 @@ Chuck Norris' blood type is AK+. Ass-Kicking Positive. It is compatible only wit
Chuck Norris is 1/8th Cherokee. This has nothing to do with ancestry, the man ate a fucking Indian. Chuck Norris is 1/8th Cherokee. This has nothing to do with ancestry, the man ate a fucking Indian.
% %
In fine print on the last page of the Guinness Book of World Records it notes that all world records are held by Chuck Norris, and those listed in the book are simply the closest anyone else has ever gotten. In fine print on the last page of the Guinness Book of World Records it notes that all world records are held by Chuck Norris, and those listed in the book are simply the closest anyone else has ever gotten.
%
There is no chin behind Chuck Norris' beard. There is only another fist. There is no chin behind Chuck Norris' beard. There is only another fist.
% %
Chuck Norris does not teabag the ladies. He potato-sacks them. Chuck Norris does not teabag the ladies. He potato-sacks them.
%
Pluto is actually an orbiting group of British soldiers from the American Revolution who entered space after the Chuck gave them a roundhouse kick to the face. Pluto is actually an orbiting group of British soldiers from the American Revolution who entered space after the Chuck gave them a roundhouse kick to the face.
% %
When Chuck Norris goes to donate blood, he declines the syringe, and instead requests a hand gun and a bucket. When Chuck Norris goes to donate blood, he declines the syringe, and instead requests a hand gun and a bucket.
@ -127,6 +129,7 @@ Chuck Norris can drink an entire gallon of milk in thirty-seven seconds.
Little known medical fact: Chuck Norris invented the Caesarean section when he roundhouse-kicked his way out of his monther's womb. Little known medical fact: Chuck Norris invented the Caesarean section when he roundhouse-kicked his way out of his monther's womb.
% %
Chuck Norris doesn't bowl strikes, he just knocks down one pin and the other nine faint. Chuck Norris doesn't bowl strikes, he just knocks down one pin and the other nine faint.
%
The show Survivor had the original premise of putting people on an island with Chuck Norris. There were no survivors, and nobody is brave enough to go to the island to retrieve the footage. The show Survivor had the original premise of putting people on an island with Chuck Norris. There were no survivors, and nobody is brave enough to go to the island to retrieve the footage.
% %
It takes Chuck Norris 20 minutes to watch 60 Minutes. It takes Chuck Norris 20 minutes to watch 60 Minutes.
@ -281,6 +284,7 @@ In a recent survey it was discovered the 94% of American women lost their virgin
Chuck Norris invented a language that incorporates karate and roundhouse kicks. So next time Chuck Norris is kicking your ass, don't be offended or hurt, he may be just trying to tell you he likes your hat. Chuck Norris invented a language that incorporates karate and roundhouse kicks. So next time Chuck Norris is kicking your ass, don't be offended or hurt, he may be just trying to tell you he likes your hat.
% %
If at first you don't succeed, you're not Chuck Norris. If at first you don't succeed, you're not Chuck Norris.
%
If Chuck Norris were a calendar, every month would be named Chucktober, and every day he'd kick your ass. If Chuck Norris were a calendar, every month would be named Chucktober, and every day he'd kick your ass.
% %
Fear is not the only emotion Chuck Norris can smell. He can also detect hope, as in "I hope I don't get a roundhouse kick from Chuck Norris." Fear is not the only emotion Chuck Norris can smell. He can also detect hope, as in "I hope I don't get a roundhouse kick from Chuck Norris."
@ -349,7 +353,7 @@ As President Roosevelt said: "We have nothing to fear but fear itself. And Chuck
% %
Chuck Norris just says "no" to drugs. If he said "yes", it would collapse Colombia's infrastructure. Chuck Norris just says "no" to drugs. If he said "yes", it would collapse Colombia's infrastructure.
% %
Since 1940, the year Chuck Norris was born, roundhouse-kick related deaths have increased 13,000 percent.  Since 1940, the year Chuck Norris was born, roundhouse-kick related deaths have increased 13,000 percent.?
% %
Crime does not pay - unless you are an undertaker following Walker, Texas Ranger, on a routine patrol. Crime does not pay - unless you are an undertaker following Walker, Texas Ranger, on a routine patrol.
% %
@ -497,7 +501,8 @@ When Chuck Norris works out on the Total Gym, the Total Gym feels like it's been
% %
Chuck Norris can skeletize a cow in two minutes. Chuck Norris can skeletize a cow in two minutes.
% %
The only sure things are Death and Taxes?and when Chuck Norris goes to work for the IRS, they'll be the same thing. The only sure things are Death and Taxes, and when Chuck Norris goes to work for the IRS, they'll be the same thing.
%
Chuck Norris' first job was as a paperboy. There were no survivors. Chuck Norris' first job was as a paperboy. There were no survivors.
% %
With the rising cost of gasoline, Chuck Norris is beginning to worry about his drinking habit. With the rising cost of gasoline, Chuck Norris is beginning to worry about his drinking habit.
@ -527,8 +532,6 @@ Chuck Norris uses 8'x10' sheets of plywood as toilet paper.
Noah was the only man notified before Chuck Norris relieved himself in the Atlantic Ocean. Noah was the only man notified before Chuck Norris relieved himself in the Atlantic Ocean.
% %
Chuck Norris once invited all of the other badasses from TV to duke it out in order to see who was the supreme badass. Only two showed up-- Jack Bauer and MacGyver. Chuck Norris once invited all of the other badasses from TV to duke it out in order to see who was the supreme badass. Only two showed up-- Jack Bauer and MacGyver.
%
% %
MacGyver immediately tried to make a bomb out of some Q-Tips and Gatorade, but Chuck Norris roundhouse-kicked him in the solar plexus. MacGyver promptly threw up his own heart. MacGyver immediately tried to make a bomb out of some Q-Tips and Gatorade, but Chuck Norris roundhouse-kicked him in the solar plexus. MacGyver promptly threw up his own heart.
% %

View file

@ -11,7 +11,7 @@ Preview the compiled result of your coffeescript with `cf "code"` as per the
following: following:
```zsh ```zsh
$ cf 'if a then be else c' $ cf 'if a then b else c'
if (a) { if (a) {
b; b;
} else { } else {

View file

@ -6,11 +6,11 @@ cf () {
} }
# compile & copy to clipboard # compile & copy to clipboard
cfc () { cfc () {
cf "$1" | pbcopy cf "$1" | clipcopy
} }
# compile from pasteboard & print # compile from clipboard & print
alias cfp='coffeeMe "$(pbpaste)"' alias cfp='cf "$(clippaste)"'
# compile from pasteboard and copy to clipboard # compile from clipboard and copy to clipboard
alias cfpc='cfp | pbcopy' alias cfpc='cfp | clipcopy'

View file

@ -1,3 +1,5 @@
# Copies the pathname of the current directory to the system or X Windows clipboard
function copydir { function copydir {
pwd | tr -d "\r\n" | pbcopy emulate -L zsh
} print -n $PWD | clipcopy
}

View file

@ -1,5 +1,7 @@
# Copies the contents of a given file to the system or X Windows clipboard
#
# copyfile <file>
function copyfile { function copyfile {
[[ "$#" != 1 ]] && return 1 emulate -L zsh
local file_to_copy=$1 clipcopy $1
cat $file_to_copy | pbcopy
} }

View file

@ -1,4 +1,4 @@
encode64(){ echo -n $1 | base64 } encode64(){ printf '%s' $1 | base64 }
decode64(){ echo -n $1 | base64 --decode } decode64(){ printf '%s' $1 | base64 --decode }
alias e64=encode64 alias e64=encode64
alias d64=decode64 alias d64=decode64

3
plugins/fedora/README.md Normal file
View file

@ -0,0 +1,3 @@
This is a plugin based on yum plugin, but using dnf as main frontend
(from Fedora 22 onwards, yum is deprecated in favor of dnf).

View file

@ -0,0 +1,16 @@
## Aliases
alias dnfs="dnf search" # search package
alias dnfp="dnf info" # show package info
alias dnfl="dnf list" # list packages
alias dnfgl="dnf grouplist" # list package groups
alias dnfli="dnf list installed" # print all installed packages
alias dnfmc="dnf makecache" # rebuilds the dnf package list
alias dnfu="sudo dnf upgrade" # upgrade packages
alias dnfi="sudo dnf install" # install package
alias dnfgi="sudo dnf groupinstall" # install package group
alias dnfr="sudo dnf remove" # remove package
alias dnfgr="sudo dnf groupremove" # remove pagage group
alias dnfrl="sudo dnf remove --remove-leaves" # remove package and leaves
alias dnfc="sudo dnf clean all" # clean cache

View file

@ -0,0 +1,11 @@
# git-extras
This plugin provides completion definitions for some of the commands defined by [git-extras](http://github.com/tj/git-extras).
## Setup notes
The completions work by augmenting the `_git` completion provided by `zsh`. This only works with the `zsh`-provided `_git`, not the `_git` provided by `git` itself. If you have both `zsh` and `git` installed, you need to make sure that the `zsh`-provided `_git` takes precedence.
### OS X Homebrew Setup
On OS X with Homebrew, you need to install `git` with `brew install git --without-completions`. Otherwise, `git`'s `_git` will take precedence, and you won't see the completions for `git-extras` commands.

View file

@ -1,10 +1,13 @@
#compdef git
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Description # Description
# ----------- # -----------
# #
# Completion script for git-extras (http://github.com/tj/git-extras). # Completion script for git-extras (http://github.com/tj/git-extras).
# #
# This depends on and reueses some of the internals of the _git completion
# function that ships with zsh itself. It will not work with the _git that ships
# with git.
#
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Authors # Authors
# ------- # -------
@ -22,16 +25,18 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
__git_command_successful () { # Internal functions
if (( ${#pipestatus:#0} > 0 )); then # These are a lot like their __git_* equivalents inside _git
_message 'not a git repository'
return 1 __gitex_command_successful () {
fi if (( ${#*:#0} > 0 )); then
return 0 _message 'not a git repository'
return 1
fi
return 0
} }
__gitex_commits() {
__git_commits() {
declare -A commits declare -A commits
git log --oneline -15 | sed 's/\([[:alnum:]]\{7\}\) /\1:/' | while read commit git log --oneline -15 | sed 's/\([[:alnum:]]\{7\}\) /\1:/' | while read commit
do do
@ -42,7 +47,7 @@ __git_commits() {
_describe -t commits commit commits && ret=0 _describe -t commits commit commits && ret=0
} }
__git_tag_names() { __gitex_tag_names() {
local expl local expl
declare -a tag_names declare -a tag_names
tag_names=(${${(f)"$(_call_program tags git for-each-ref --format='"%(refname)"' refs/tags 2>/dev/null)"}#refs/tags/}) tag_names=(${${(f)"$(_call_program tags git for-each-ref --format='"%(refname)"' refs/tags 2>/dev/null)"}#refs/tags/})
@ -51,7 +56,7 @@ __git_tag_names() {
} }
__git_branch_names() { __gitex_branch_names() {
local expl local expl
declare -a branch_names declare -a branch_names
branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/}) branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/})
@ -59,7 +64,7 @@ __git_branch_names() {
_wanted branch-names expl branch-name compadd $* - $branch_names _wanted branch-names expl branch-name compadd $* - $branch_names
} }
__git_specific_branch_names() { __gitex_specific_branch_names() {
local expl local expl
declare -a branch_names declare -a branch_names
branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads/"$1" 2>/dev/null)"}#refs/heads/$1/}) branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads/"$1" 2>/dev/null)"}#refs/heads/$1/})
@ -67,32 +72,28 @@ __git_specific_branch_names() {
_wanted branch-names expl branch-name compadd $* - $branch_names _wanted branch-names expl branch-name compadd $* - $branch_names
} }
__gitex_feature_branch_names() {
__git_feature_branch_names() { __gitex_specific_branch_names 'feature'
__git_specific_branch_names 'feature'
} }
__gitex_refactor_branch_names() {
__git_refactor_branch_names() { __gitex_specific_branch_names 'refactor'
__git_specific_branch_names 'refactor'
} }
__gitex_bug_branch_names() {
__git_bug_branch_names() { __gitex_specific_branch_names 'bug'
__git_specific_branch_names 'bug'
} }
__gitex_submodule_names() {
__git_submodule_names() {
local expl local expl
declare -a submodule_names declare -a submodule_names
submodule_names=(${(f)"$(_call_program branchrefs git submodule status | awk '{print $2}')"}) submodule_names=(${(f)"$(_call_program branchrefs git submodule status | awk '{print $2}')"}) # '
__git_command_successful || return __git_command_successful || return
_wanted submodule-names expl submodule-name compadd $* - $submodule_names _wanted submodule-names expl submodule-name compadd $* - $submodule_names
} }
__git_author_names() { __gitex_author_names() {
local expl local expl
declare -a author_names declare -a author_names
author_names=(${(f)"$(_call_program branchrefs git log --format='%aN' | sort -u)"}) author_names=(${(f)"$(_call_program branchrefs git log --format='%aN' | sort -u)"})
@ -123,7 +124,7 @@ _git-bug() {
case $line[1] in case $line[1] in
(finish) (finish)
_arguments -C \ _arguments -C \
':branch-name:__git_bug_branch_names' ':branch-name:__gitex_bug_branch_names'
;; ;;
esac esac
esac esac
@ -139,7 +140,7 @@ _git-changelog() {
_git-contrib() { _git-contrib() {
_arguments \ _arguments \
':author:__git_author_names' ':author:__gitex_author_names'
} }
@ -151,19 +152,19 @@ _git-count() {
_git-delete-branch() { _git-delete-branch() {
_arguments \ _arguments \
':branch-name:__git_branch_names' ':branch-name:__gitex_branch_names'
} }
_git-delete-submodule() { _git-delete-submodule() {
_arguments \ _arguments \
':submodule-name:__git_submodule_names' ':submodule-name:__gitex_submodule_names'
} }
_git-delete-tag() { _git-delete-tag() {
_arguments \ _arguments \
':tag-name:__git_tag_names' ':tag-name:__gitex_tag_names'
} }
@ -172,6 +173,7 @@ _git-effort() {
'--above[ignore file with less than x commits]' '--above[ignore file with less than x commits]'
} }
_git-extras() { _git-extras() {
local curcontext=$curcontext state line ret=1 local curcontext=$curcontext state line ret=1
declare -A opt_args declare -A opt_args
@ -216,7 +218,7 @@ _git-feature() {
case $line[1] in case $line[1] in
(finish) (finish)
_arguments -C \ _arguments -C \
':branch-name:__git_feature_branch_names' ':branch-name:__gitex_feature_branch_names'
;; ;;
esac esac
esac esac
@ -225,8 +227,8 @@ _git-feature() {
_git-graft() { _git-graft() {
_arguments \ _arguments \
':src-branch-name:__git_branch_names' \ ':src-branch-name:__gitex_branch_names' \
':dest-branch-name:__git_branch_names' ':dest-branch-name:__gitex_branch_names'
} }
@ -236,12 +238,14 @@ _git-ignore() {
'(--global -g)'{--global,-g}'[show global gitignore]' '(--global -g)'{--global,-g}'[show global gitignore]'
} }
_git-missing() { _git-missing() {
_arguments \ _arguments \
':first-branch-name:__git_branch_names' \ ':first-branch-name:__gitex_branch_names' \
':second-branch-name:__git_branch_names' ':second-branch-name:__gitex_branch_names'
} }
_git-refactor() { _git-refactor() {
local curcontext=$curcontext state line ret=1 local curcontext=$curcontext state line ret=1
declare -A opt_args declare -A opt_args
@ -263,7 +267,7 @@ _git-refactor() {
case $line[1] in case $line[1] in
(finish) (finish)
_arguments -C \ _arguments -C \
':branch-name:__git_refactor_branch_names' ':branch-name:__gitex_refactor_branch_names'
;; ;;
esac esac
esac esac
@ -272,12 +276,12 @@ _git-refactor() {
_git-squash() { _git-squash() {
_arguments \ _arguments \
':branch-name:__git_branch_names' ':branch-name:__gitex_branch_names'
} }
_git-summary() { _git-summary() {
_arguments '--line[summarize with lines other than commits]' _arguments '--line[summarize with lines rather than commits]'
__git_commits __gitex_commits
} }
@ -298,7 +302,7 @@ zstyle ':completion:*:*:git:*' user-commands \
count:'count commits' \ count:'count commits' \
create-branch:'create local and remote branch' \ create-branch:'create local and remote branch' \
delete-branch:'delete local and remote branch' \ delete-branch:'delete local and remote branch' \
delete-merged-brancees:'delete merged branches'\ delete-merged-branches:'delete merged branches'\
delete-submodule:'delete submodule' \ delete-submodule:'delete submodule' \
delete-tag:'delete local and remote tag' \ delete-tag:'delete local and remote tag' \
effort:'display effort statistics' \ effort:'display effort statistics' \

View file

@ -20,6 +20,13 @@
# c. Or, use this file as an oh-my-zsh plugin. # c. Or, use this file as an oh-my-zsh plugin.
# #
alias ghf='git hf'
alias ghff='git hf feature'
alias ghfr='git hf release'
alias ghfh='git hf hotfix'
alias ghfs='git hf support'
alias ghfu='git hf update'
_git-hf () _git-hf ()
{ {
local curcontext="$curcontext" state line local curcontext="$curcontext" state line

View file

@ -84,6 +84,7 @@ alias gcs='git commit -S'
alias gd='git diff' alias gd='git diff'
alias gdca='git diff --cached' alias gdca='git diff --cached'
alias gdct='git describe --tags `git rev-list --tags --max-count=1`'
alias gdt='git diff-tree --no-commit-id --name-only -r' alias gdt='git diff-tree --no-commit-id --name-only -r'
gdv() { git diff -w "$@" | view - } gdv() { git diff -w "$@" | view - }
compdef _git gdv=git-diff compdef _git gdv=git-diff
@ -211,11 +212,13 @@ alias gsts='git stash show --text'
alias gsu='git submodule update' alias gsu='git submodule update'
alias gts='git tag -s' alias gts='git tag -s'
alias gtv='git tag | sort -V'
alias gunignore='git update-index --no-assume-unchanged' alias gunignore='git update-index --no-assume-unchanged'
alias gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1' alias gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1'
alias gup='git pull --rebase' alias gup='git pull --rebase'
alias gupv='git pull --rebase -v' alias gupv='git pull --rebase -v'
alias glum='git pull upstream master'
alias gvt='git verify-tag' alias gvt='git verify-tag'

View file

@ -1,6 +1,6 @@
#!zsh #!zsh
############################################################################## ##############################################################################
# A descriptive listing of core Gradle commands # A descriptive listing of core Gradle commands
############################################################################ ############################################################################
function _gradle_core_commands() { function _gradle_core_commands() {
local ret=1 state local ret=1 state
@ -32,14 +32,22 @@ function _gradle_arguments() {
'--stop[Stop the Gradle daemon]' \ '--stop[Stop the Gradle daemon]' \
'--daemon[Use the Gradle daemon]' \ '--daemon[Use the Gradle daemon]' \
'--no-daemon[Do not use the Gradle daemon]' \ '--no-daemon[Do not use the Gradle daemon]' \
'--no-opt[Do not perform any task optimization]' \ '--rerun-task [Specifies that any task optimization is ignored.]' \
'-i[Log at the info level]' \ '-i[Log at the info level]' \
'-m[Dry run]' \ '-m[Dry run]' \
'-P[Set a project property]' \ '-P[Set a project property]' \
'-p[Specifies the start directory]' \
'--profile[Profile the build time]' \ '--profile[Profile the build time]' \
'-q[Log at the quiet level (only show errors)]' \ '-q[Log at the quiet level (only show errors)]' \
'-v[Print the Gradle version info]' \ '-v[Print the Gradle version info]' \
'-x[Specify a task to be excluded]' \ '-x[Specify a task to be excluded]' \
'-b[Specifies the build file.]' \
'-c[Specifies the settings file.]' \
'--continue[Continues task execution after a task failure.]' \
'-g[Specifies the Gradle user home directory.]' \
'-I[Specifies an initialization script.]' \
'--refresh-dependencies[Refresh the state of dependencies.]' \
'-u[Don''t search in parent directories for a settings.gradle file.]' \
'*::command:->command' \ '*::command:->command' \
&& return 0 && return 0
} }

View file

@ -19,11 +19,11 @@
# Grabs all available tasks from the `gulpfile.js` # Grabs all available tasks from the `gulpfile.js`
# in the current directory. # in the current directory.
# #
function $$gulp_completion() { function $$gulp_completion {
compls=$(grep -Eo "gulp.task\(('(([a-zA-Z0-9]|-)*)',)" gulpfile.js 2>/dev/null | grep -Eo "'(([a-zA-Z0-9]|-)*)'" | sed s/"'"//g | sort) compls="$(grep -Eo "gulp.task\((['\"](([a-zA-Z0-9]|-)*)['\"],)" gulpfile.js 2>/dev/null | grep -Eo "['\"](([a-zA-Z0-9]|-)*)['\"]" | sed s/"['\"]"//g | sort)"
completions=(${=compls}) completions=(${=compls})
compadd -- $completions compadd -- $completions
} }
compdef $$gulp_completion gulp compdef $$gulp_completion gulp

View file

@ -19,14 +19,19 @@ Nmap options are:
## Aliases explained ## Aliases explained
* nmap_open_ports - scan for open ports on target * nmap_open_ports - Scan for open ports on target
* nmap_list_interfaces - list all network interfaces on host where the command runs * nmap_list_interfaces - List all network interfaces on host where the command runs
* nmap_slow - slow scan that avoids to spam the targets logs * nmap_slow - Slow scan that avoids to spam the targets logs
* nmap_fin - scan to see if hosts are up with TCP FIN scan * nmap_fin - Scan to see if hosts are up with TCP FIN scan
* nmap_full - aggressive full scan that scans all ports, tries to determine OS and service versions * nmap_full - Aggressive full scan that scans all ports, tries to determine OS and service versions
* nmap_check_for_firewall - TCP ACK scan to check for firewall existence * nmap_check_for_firewall - TCP ACK scan to check for firewall existence
* nmap_ping_through_firewall - Host discovery with SYN and ACK probes instead of just pings to avoid firewall * nmap_ping_through_firewall - Host discovery with SYN and ACK probes instead of just pings to avoid firewall
restrictions restrictions
* nmap_fast - Fast scan of the top 300 popular ports * nmap_fast - Fast scan of the top 300 popular ports
* nmap_detect_versions - detects versions of services and OS, runs on all ports * nmap_detect_versions - Detects versions of services and OS, runs on all ports
* nmap_check_for_vulns - uses vulscan script to check target services for vulnerabilities * nmap_check_for_vulns - Uses vulscan script to check target services for vulnerabilities
* nmap_full_udp - Same as full but via UDP
* nmap_traceroute - Try to traceroute using the most common ports
* nmap_full_with_scripts - Same as nmap_full but also runs all the scripts
* nmap_web_safe_osscan - Little "safer" scan for OS version as connecting to only HTTP and HTTPS ports doesn't look so attacking.

View file

@ -22,7 +22,11 @@ alias nmap_fin="nmap -sF -v"
alias nmap_full="nmap -sS -T4 -PE -PP -PS80,443 -PY -g 53 -A -p1-65535 -v" alias nmap_full="nmap -sS -T4 -PE -PP -PS80,443 -PY -g 53 -A -p1-65535 -v"
alias nmap_check_for_firewall="nmap -sA -p1-65535 -v -T4" alias nmap_check_for_firewall="nmap -sA -p1-65535 -v -T4"
alias nmap_ping_through_firewall="nmap -PS -PA" alias nmap_ping_through_firewall="nmap -PS -PA"
alias nmap_fast="nmap -F -T5 --top-ports 300" alias nmap_fast="nmap -F -T5 --version-light --top-ports 300"
alias nmap_detect_versions="nmap -sV -p1-65535 -O --osscan-guess -T4 -Pn" alias nmap_detect_versions="nmap -sV -p1-65535 -O --osscan-guess -T4 -Pn"
alias nmap_check_for_vulns="nmap --script=vulscan" alias nmap_check_for_vulns="nmap --script=vulscan"
alias nmap_full_udp="nmap -sS -sU -T4 -A -v -PE -PS22,25,80 -PA21,23,80,443,3389 "
alias nmap_traceroute="nmap -sP -PE -PS22,25,80 -PA21,23,80,3389 -PU -PO --traceroute "
alias nmap_full_with_scripts="sudo nmap -sS -sU -T4 -A -v -PE -PP -PS21,22,23,25,80,113,31339 -PA80,113,443,10042 -PO --script all "
alias nmap_web_safe_osscan="sudo nmap -p 80,443 -O -v --osscan-guess --fuzzy "

View file

@ -1,8 +1,9 @@
eval "$(npm completion 2>/dev/null)" eval "$(npm completion 2>/dev/null)"
# Install dependencies globally
alias npmg="npm i -g "
# npm package names are lowercase # npm package names are lowercase
# - https://twitter.com/substack/status/23122603153150361
# Thus, we've used camelCase for the following aliases: # Thus, we've used camelCase for the following aliases:
# Install and save to dependencies in your package.json # Install and save to dependencies in your package.json
@ -12,6 +13,7 @@ alias npmS="npm i -S "
# Install and save to dev-dependencies in your package.json # Install and save to dev-dependencies in your package.json
# npmd is used by https://github.com/dominictarr/npmd # npmd is used by https://github.com/dominictarr/npmd
alias npmD="npm i -D " alias npmD="npm i -D "
# Execute command from node_modules folder based on current directory # Execute command from node_modules folder based on current directory
# i.e npmE gulp # i.e npmE gulp
alias npmE='PATH="$(npm bin)":"$PATH"' alias npmE='PATH="$(npm bin)":"$PATH"'

View file

@ -167,6 +167,17 @@ function itunes() {
vol) vol)
opt="set sound volume to $1" #$1 Due to the shift opt="set sound volume to $1" #$1 Due to the shift
;; ;;
playing|status)
local state=`osascript -e 'tell application "iTunes" to player state as string'`
if [[ "$state" = "playing" ]]; then
currenttrack=`osascript -e 'tell application "iTunes" to name of current track as string'`
currentartist=`osascript -e 'tell application "iTunes" to artist of current track as string'`
echo -E "Listening to $fg[yellow]$currenttrack$reset_color by $fg[yellow]$currentartist$reset_color";
else
echo "iTunes is" $state;
fi
return 0
;;
shuf|shuff|shuffle) shuf|shuff|shuffle)
# The shuffle property of current playlist can't be changed in iTunes 12, # The shuffle property of current playlist can't be changed in iTunes 12,
# so this workaround uses AppleScript to simulate user input instead. # so this workaround uses AppleScript to simulate user input instead.
@ -205,6 +216,7 @@ EOF
echo "\tnext|previous\tplay next or previous track" echo "\tnext|previous\tplay next or previous track"
echo "\tshuf|shuffle [on|off|toggle]\tSet shuffled playback. Default: toggle. Note: toggle doesn't support the MiniPlayer." echo "\tshuf|shuffle [on|off|toggle]\tSet shuffled playback. Default: toggle. Note: toggle doesn't support the MiniPlayer."
echo "\tvol\tSet the volume, takes an argument from 0 to 100" echo "\tvol\tSet the volume, takes an argument from 0 to 100"
echo "\tplaying|status\tShow what song is currently playing in iTunes."
echo "\thelp\tshow this message and exit" echo "\thelp\tshow this message and exit"
return 0 return 0
;; ;;

View file

@ -17,7 +17,11 @@ for pyenvdir in "${pyenvdirs[@]}" ; do
FOUND_PYENV=1 FOUND_PYENV=1
export PYENV_ROOT=$pyenvdir export PYENV_ROOT=$pyenvdir
export PATH=${pyenvdir}/bin:$PATH export PATH=${pyenvdir}/bin:$PATH
eval "$(pyenv init --no-rehash - zsh)" eval "$(pyenv init - zsh)"
if pyenv commands | command grep -q virtualenv-init; then
eval "$(pyenv virtualenv-init - zsh)"
fi
function pyenv_prompt_info() { function pyenv_prompt_info() {
echo "$(pyenv version-name)" echo "$(pyenv version-name)"

View file

@ -42,6 +42,7 @@ alias rp='rails plugin'
alias ru='rails runner' alias ru='rails runner'
alias rs='rails server' alias rs='rails server'
alias rsd='rails server --debugger' alias rsd='rails server --debugger'
alias rsp='rails server --port'
# Rake aliases # Rake aliases
alias rdm='rake db:migrate' alias rdm='rake db:migrate'
@ -59,7 +60,7 @@ alias rn='rake notes'
alias rr='rake routes' alias rr='rake routes'
alias rrg='rake routes | grep' alias rrg='rake routes | grep'
alias rt='rake test' alias rt='rake test'
alias rmd='rake middleware'
# legacy stuff # legacy stuff
alias sstat='thin --stats "/thin/stats" start' alias sstat='thin --stats "/thin/stats" start'

View file

@ -8,17 +8,7 @@ _rake_refresh () {
} }
_rake_does_task_list_need_generating () { _rake_does_task_list_need_generating () {
if [ ! -f .rake_tasks ]; then return 0; [[ ! -f .rake_tasks ]] || [[ Rakefile -nt .rake_tasks ]]
else
if [[ "$OSTYPE" = darwin* ]]; then
accurate=$(stat -f%m .rake_tasks)
changed=$(stat -f%m Rakefile)
else
accurate=$(stat -c%Y .rake_tasks)
changed=$(stat -c%Y Rakefile)
fi
return $(expr $accurate '>=' $changed)
fi
} }
_rake_generate () { _rake_generate () {

View file

@ -1,5 +1,3 @@
# Sublime Text 2 Aliases
if [[ $('uname') == 'Linux' ]]; then if [[ $('uname') == 'Linux' ]]; then
local _sublime_linux_paths > /dev/null 2>&1 local _sublime_linux_paths > /dev/null 2>&1
_sublime_linux_paths=( _sublime_linux_paths=(
@ -33,7 +31,6 @@ elif [[ "$OSTYPE" = darwin* ]]; then
"$HOME/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl" "$HOME/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
"$HOME/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" "$HOME/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
) )
for _sublime_path in $_sublime_darwin_paths; do for _sublime_path in $_sublime_darwin_paths; do
if [[ -a $_sublime_path ]]; then if [[ -a $_sublime_path ]]; then
subl () { "$_sublime_path" $* } subl () { "$_sublime_path" $* }
@ -41,6 +38,21 @@ elif [[ "$OSTYPE" = darwin* ]]; then
break break
fi fi
done done
elif [[ "$OSTYPE" = 'cygwin' ]]; then
local _sublime_cygwin_paths > /dev/null 2>&1
_sublime_cygwin_paths=(
"$(cygpath $ProgramW6432/Sublime\ Text\ 2)/sublime_text.exe"
"$(cygpath $ProgramW6432/Sublime\ Text\ 3)/sublime_text.exe"
)
for _sublime_path in $_sublime_cygwin_paths; do
if [[ -a $_sublime_path ]]; then
subl () { "$_sublime_path" $* }
alias st=subl
break
fi
done
fi fi
alias stt='st .' alias stt='st .'

View file

@ -10,3 +10,7 @@ sudo_commands=(
for c in $user_commands; do; alias sc-$c="systemctl $c"; done for c in $user_commands; do; alias sc-$c="systemctl $c"; done
for c in $sudo_commands; do; alias sc-$c="sudo systemctl $c"; done for c in $sudo_commands; do; alias sc-$c="sudo systemctl $c"; done
alias sc-enable-now="sc-enable --now"
alias sc-disable-now="sc-disable --now"
alias sc-mask-now="sc-mask --now"

View file

@ -1,11 +1,3 @@
alias et='mate .'
alias ett='mate Gemfile app config features lib db public spec test Rakefile Capfile Todo'
alias etp='mate app config lib db public spec test vendor/plugins vendor/gems Rakefile Capfile Todo'
alias etts='mate app config lib db public script spec test vendor/plugins vendor/gems Rakefile Capfile Todo'
# Edit Ruby app in TextMate
alias mr='mate CHANGELOG app config db lib public script spec test'
# If the tm command is called without an argument, open TextMate in the current directory # If the tm command is called without an argument, open TextMate in the current directory
# If tm is passed a directory, cd to it and open it in TextMate # If tm is passed a directory, cd to it and open it in TextMate
# If tm is passed a file, open it in TextMate # If tm is passed a file, open it in TextMate

View file

@ -61,8 +61,8 @@ Insertion
Delete and Insert Delete and Insert
----------------- -----------------
- `ctrl-h` : While in *Insert mode*: delete character after the cursor - `ctrl-h` : While in *Insert mode*: delete character before the cursor
- `ctrl-w` : While in *Insert mode*: delete word after the cursor - `ctrl-w` : While in *Insert mode*: delete word before the cursor
- `d{motion}` : Delete text that {motion} moves over - `d{motion}` : Delete text that {motion} moves over
- `dd` : Delete line - `dd` : Delete line
- `D` : Delete characters under the cursor until the end of the line - `D` : Delete characters under the cursor until the end of the line

View file

@ -179,7 +179,10 @@ function simulator {
if [[ -d "${devfolder}/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app" ]]; then if [[ -d "${devfolder}/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app" ]]; then
open "${devfolder}/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app" open "${devfolder}/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app"
# Xcode ≥ 6.x # Xcode ≥ 6.x
else elif [[ -d "${devfolder}/Applications/iOS Simulator.app" ]]; then
open "${devfolder}/Applications/iOS Simulator.app" open "${devfolder}/Applications/iOS Simulator.app"
# Xcode ≥ 7.x
else
open "${devfolder}/Applications/Simulator.app"
fi fi
} }

View file

@ -12,14 +12,15 @@ PROMPT='
%{$fg_bold[green]%}${PWD/#$HOME/~}%{$reset_color%}$(git_prompt_info) ⌚ %{$fg_bold[red]%}%*%{$reset_color%} %{$fg_bold[green]%}${PWD/#$HOME/~}%{$reset_color%}$(git_prompt_info) ⌚ %{$fg_bold[red]%}%*%{$reset_color%}
$ ' $ '
ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[magenta]%}⭠ " # Must use Powerline font, for \uE0A0 to render.
ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[magenta]%}\uE0A0 "
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}!" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}!"
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[green]%}?" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[green]%}?"
ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_CLEAN=""
if [ -e ~/.rvm/bin/rvm-prompt ]; then if [ -e ~/.rvm/bin/rvm-prompt ]; then
RPROMPT='%{$fg_bold[red]%}$(~/.rvm/bin/rvm-prompt i v)%{$reset_color%}' RPROMPT='%{$fg_bold[red]%}$(rvm_current)%{$reset_color%}'
else else
if which rbenv &> /dev/null; then if which rbenv &> /dev/null; then
RPROMPT='%{$fg_bold[red]%}$(rbenv_version)%{$reset_color%}' RPROMPT='%{$fg_bold[red]%}$(rbenv_version)%{$reset_color%}'

View file

@ -26,6 +26,9 @@ fi
# oh-my-zsh directory. # oh-my-zsh directory.
[[ -w "$ZSH" ]] || return 0 [[ -w "$ZSH" ]] || return 0
# Cancel upgrade if git is unavailable on the system
whence git >/dev/null || return 0
if [ -f ~/.zsh-update ] if [ -f ~/.zsh-update ]
then then
. ~/.zsh-update . ~/.zsh-update
@ -54,4 +57,3 @@ else
# create the zsh file # create the zsh file
_update_zsh_update _update_zsh_update
fi fi

View file

@ -1,98 +1,122 @@
set -e main() {
# Use colors, but only if connected to a terminal, and that terminal
# supports them.
if which tput >/dev/null 2>&1; then
ncolors=$(tput colors)
fi
if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
RED="$(tput setaf 1)"
GREEN="$(tput setaf 2)"
YELLOW="$(tput setaf 3)"
BLUE="$(tput setaf 4)"
BOLD="$(tput bold)"
NORMAL="$(tput sgr0)"
else
RED=""
GREEN=""
YELLOW=""
BLUE=""
BOLD=""
NORMAL=""
fi
# Use colors, but only if connected to a terminal, and that terminal # Only enable exit-on-error after the non-critical colorization stuff,
# supports them. # which may fail on systems lacking tput or terminfo
ncolors=$(tput colors) set -e
if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
RED="$(tput setaf 1)"
GREEN="$(tput setaf 2)"
YELLOW="$(tput setaf 3)"
BLUE="$(tput setaf 4)"
BOLD="$(tput bold)"
NORMAL="$(tput sgr0)"
else
RED=""
GREEN=""
YELLOW=""
BLUE=""
BOLD=""
NORMAL=""
fi
CHECK_ZSH_INSTALLED=$(grep /zsh$ /etc/shells | wc -l)
if [ ! $CHECK_ZSH_INSTALLED -ge 1 ]; then
printf "${YELLOW}Zsh is not installed!${NORMAL} Please install zsh first!\n"
exit
fi
unset CHECK_ZSH_INSTALLED
if [ ! -n "$ZSH" ]; then CHECK_ZSH_INSTALLED=$(grep /zsh$ /etc/shells | wc -l)
ZSH=~/.oh-my-zsh if [ ! $CHECK_ZSH_INSTALLED -ge 1 ]; then
fi printf "${YELLOW}Zsh is not installed!${NORMAL} Please install zsh first!\n"
exit
fi
unset CHECK_ZSH_INSTALLED
if [ -d "$ZSH" ]; then if [ ! -n "$ZSH" ]; then
printf "${YELLOW}You already have Oh My Zsh installed.${NORMAL}\n" ZSH=~/.oh-my-zsh
printf "You'll need to remove $ZSH if you want to re-install.\n" fi
exit
fi
# Prevent the cloned repository from having insecure permissions. Failing to do if [ -d "$ZSH" ]; then
# so causes compinit() calls to fail with "command not found: compdef" errors printf "${YELLOW}You already have Oh My Zsh installed.${NORMAL}\n"
# for users with insecure umasks (e.g., "002", allowing group writability). Note printf "You'll need to remove $ZSH if you want to re-install.\n"
# that this will be ignored under Cygwin by default, as Windows ACLs take exit
# precedence over umasks except for filesystems mounted with option "noacl". fi
umask g-w,o-w
printf "${BLUE}Cloning Oh My Zsh...${NORMAL}\n" # Prevent the cloned repository from having insecure permissions. Failing to do
hash git >/dev/null 2>&1 && env git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $ZSH || { # so causes compinit() calls to fail with "command not found: compdef" errors
printf "git not installed\n" # for users with insecure umasks (e.g., "002", allowing group writability). Note
exit # that this will be ignored under Cygwin by default, as Windows ACLs take
# precedence over umasks except for filesystems mounted with option "noacl".
umask g-w,o-w
printf "${BLUE}Cloning Oh My Zsh...${NORMAL}\n"
hash git >/dev/null 2>&1 || {
echo "Error: git is not installed"
exit 1
}
env git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $ZSH || {
printf "Error: git clone of oh-my-zsh repo failed\n"
exit 1
}
# The Windows (MSYS) Git is not compatible with normal use on cygwin
if [ "$OSTYPE" = cygwin ]; then
if git --version | grep msysgit > /dev/null; then
echo "Error: Windows/MSYS Git is not supported on Cygwin"
echo "Error: Make sure the Cygwin git package is installed and is first on the path"
exit 1
fi
fi
printf "${BLUE}Looking for an existing zsh config...${NORMAL}\n"
if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then
printf "${YELLOW}Found ~/.zshrc.${NORMAL} ${GREEN}Backing up to ~/.zshrc.pre-oh-my-zsh${NORMAL}\n";
mv ~/.zshrc ~/.zshrc.pre-oh-my-zsh;
fi
printf "${BLUE}Using the Oh My Zsh template file and adding it to ~/.zshrc${NORMAL}\n"
cp $ZSH/templates/zshrc.zsh-template ~/.zshrc
sed "/^export ZSH=/ c\\
export ZSH=$ZSH
" ~/.zshrc > ~/.zshrc-omztemp
mv -f ~/.zshrc-omztemp ~/.zshrc
printf "${BLUE}Copying your current PATH and adding it to the end of ~/.zshrc for you.${NORMAL}\n"
sed "/export PATH=/ c\\
export PATH=\"$PATH\"
" ~/.zshrc > ~/.zshrc-omztemp
mv -f ~/.zshrc-omztemp ~/.zshrc
# If this user's login shell is not already "zsh", attempt to switch.
TEST_CURRENT_SHELL=$(expr "$SHELL" : '.*/\(.*\)')
if [ "$TEST_CURRENT_SHELL" != "zsh" ]; then
# If this platform provides a "chsh" command (not Cygwin), do it, man!
if hash chsh >/dev/null 2>&1; then
printf "${BLUE}Time to change your default shell to zsh!${NORMAL}\n"
chsh -s $(grep /zsh$ /etc/shells | tail -1)
# Else, suggest the user do so manually.
else
printf "I can't change your shell automatically because this system does not have chsh.\n"
printf "${BLUE}Please manually change your default shell to zsh!${NORMAL}\n"
fi
fi
printf "${GREEN}"
echo ' __ __ '
echo ' ____ / /_ ____ ___ __ __ ____ _____/ /_ '
echo ' / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ '
echo '/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / '
echo '\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ '
echo ' /____/ ....is now installed!'
echo ''
echo ''
echo 'Please look over the ~/.zshrc file to select plugins, themes, and options.'
echo ''
echo 'p.s. Follow us at https://twitter.com/ohmyzsh.'
echo ''
echo 'p.p.s. Get stickers and t-shirts at http://shop.planetargon.com.'
echo ''
printf "${NORMAL}"
env zsh
} }
printf "${BLUE}Looking for an existing zsh config...${NORMAL}\n" main
if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then
printf "${YELLOW}Found ~/.zshrc.${NORMAL} ${GREEN}Backing up to ~/.zshrc.pre-oh-my-zsh${NORMAL}\n";
mv ~/.zshrc ~/.zshrc.pre-oh-my-zsh;
fi
printf "${BLUE}Using the Oh My Zsh template file and adding it to ~/.zshrc${NORMAL}\n"
cp $ZSH/templates/zshrc.zsh-template ~/.zshrc
sed "/^export ZSH=/ c\\
export ZSH=$ZSH
" ~/.zshrc > ~/.zshrc-omztemp
mv -f ~/.zshrc-omztemp ~/.zshrc
printf "${BLUE}Copying your current PATH and adding it to the end of ~/.zshrc for you.${NORMAL}\n"
sed "/export PATH=/ c\\
export PATH=\"$PATH\"
" ~/.zshrc > ~/.zshrc-omztemp
mv -f ~/.zshrc-omztemp ~/.zshrc
# If this user's login shell is not already "zsh", attempt to switch.
if [ "$(expr "$SHELL" : '.*/\(.*\)')" != "zsh" ]; then
# If this platform provides a "chsh" command (not Cygwin), do it, man!
if hash chsh >/dev/null 2>&1; then
printf "${BLUE}Time to change your default shell to zsh!${NORMAL}\n"
chsh -s $(grep /zsh$ /etc/shells | tail -1)
# Else, suggest the user do so manually.
else
printf "${BLUE}Please manually change your default shell to zsh!${NORMAL}\n"
fi
fi
printf "${GREEN}"
echo ' __ __ '
echo ' ____ / /_ ____ ___ __ __ ____ _____/ /_ '
echo ' / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ '
echo '/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / '
echo '\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ '
echo ' /____/ ....is now installed!'
echo ''
echo ''
echo 'Please look over the ~/.zshrc file to select plugins, themes, and options.'
echo ''
echo 'p.s. Follow us at https://twitter.com/ohmyzsh.'
echo ''
echo 'p.p.s. Get stickers and t-shirts at http://shop.planetargon.com.'
echo ''
printf "${NORMAL}"
env zsh

View file

@ -1,5 +1,12 @@
read -r -p "Are you sure you want to remove Oh My Zsh? [y/N] " confirmation
if [ "$confirmation" != y ] && [ "$confirmation" != Y ]
then
echo "Uninstall cancelled"
exit
fi
echo "Removing ~/.oh-my-zsh" echo "Removing ~/.oh-my-zsh"
if [[ -d ~/.oh-my-zsh ]] if [ -d ~/.oh-my-zsh ]
then then
rm -rf ~/.oh-my-zsh rm -rf ~/.oh-my-zsh
fi fi
@ -20,9 +27,13 @@ then
source ~/.zshrc; source ~/.zshrc;
else else
echo "Switching back to bash" if hash chsh >/dev/null 2>&1
chsh -s /bin/bash then
source /etc/profile echo "Switching back to bash"
chsh -s /bin/bash
else
echo "You can edit /etc/passwd to switch your default shell back to bash"
fi
fi fi
echo "Thanks for trying out Oh My Zsh. It's been uninstalled." echo "Thanks for trying out Oh My Zsh. It's been uninstalled."

View file

@ -1,7 +1,9 @@
# Use colors, but only if connected to a terminal, and that terminal # Use colors, but only if connected to a terminal, and that terminal
# supports them. # supports them.
ncolors=$(tput colors) if which tput >/dev/null 2>&1; then
ncolors=$(tput colors)
fi
if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
RED="$(tput setaf 1)" RED="$(tput setaf 1)"
GREEN="$(tput setaf 2)" GREEN="$(tput setaf 2)"