# Path to your oh-my-zsh configuration. | |
ZSH=$HOME/.oh-my-zsh | |
# Set name of the theme to load. | |
# Look in ~/.oh-my-zsh/themes/ | |
# Optionally, if you set this to "random", it'll load a random theme each | |
# time that oh-my-zsh is loaded. | |
ZSH_THEME="robbyrussell" | |
# Example aliases | |
# alias zshconfig="mate ~/.zshrc" | |
# alias ohmyzsh="mate ~/.oh-my-zsh" | |
# Set to this to use case-sensitive completion | |
# CASE_SENSITIVE="true" | |
# Comment this out to disable bi-weekly auto-update checks | |
# DISABLE_AUTO_UPDATE="true" | |
# Uncomment to change how many often would you like to wait before auto-updates occur? (in days) | |
# export UPDATE_ZSH_DAYS=13 | |
# Uncomment following line if you want to disable colors in ls | |
# DISABLE_LS_COLORS="true" | |
# Uncomment following line if you want to disable autosetting terminal title. | |
# DISABLE_AUTO_TITLE="true" | |
# Uncomment following line if you want red dots to be displayed while waiting for completion | |
# COMPLETION_WAITING_DOTS="true" | |
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) | |
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ | |
# Example format: plugins=(rails git textmate ruby lighthouse) | |
plugins=(sublime bundler ruby gitfast brew cloudapp capistrano github osx rake rails rbenv ssh-agent terminalapp) | |
source $ZSH/oh-my-zsh.sh | |
# Customize to your needs... | |
export PATH=/usr/local/heroku/bin:$HOME/.rbenv/bin:$PATH | |
#{{{ ZSH Modules | |
autoload -U compinit promptinit zcalc zsh-mime-setup | |
compinit | |
promptinit | |
zsh-mime-setup | |
#}}} | |
#{{{ Options | |
# why would you type 'cd dir' if you could just type 'dir'? | |
setopt AUTO_CD | |
# Now we can pipe to multiple outputs! | |
setopt MULTIOS | |
# Spell check commands! (Sometimes annoying) | |
setopt CORRECT | |
# This makes cd=pushd | |
setopt AUTO_PUSHD | |
# This will use named dirs when possible | |
setopt AUTO_NAME_DIRS | |
# If we have a glob this will expand it | |
setopt GLOB_COMPLETE | |
setopt PUSHD_MINUS | |
# No more annoying pushd messages... | |
# setopt PUSHD_SILENT | |
# blank pushd goes to home | |
setopt PUSHD_TO_HOME | |
# this will ignore multiple directories for the stack. Useful? I dunno. | |
setopt PUSHD_IGNORE_DUPS | |
# 10 second wait if you do something that will delete everything. I wish I'd had this before... | |
setopt RM_STAR_WAIT | |
# use magic (this is default, but it can't hurt!) | |
setopt ZLE | |
setopt NO_HUP | |
# only fools wouldn't do this ;-) | |
export EDITOR="subl -n -w" | |
setopt IGNORE_EOF | |
# If I could disable Ctrl-s completely I would! | |
setopt NO_FLOW_CONTROL | |
# Keep echo "station" > station from clobbering station | |
setopt NO_CLOBBER | |
# Case insensitive globbing | |
setopt NO_CASE_GLOB | |
# Be Reasonable! | |
setopt NUMERIC_GLOB_SORT | |
# I don't know why I never set this before. | |
setopt EXTENDED_GLOB | |
# hows about arrays be awesome? (that is, frew${cool}frew has frew surrounding all the variables, not just first and last | |
setopt RC_EXPAND_PARAM | |
#}}} | |
#{{{ Completion Stuff | |
bindkey -M viins '\C-i' complete-word | |
# Faster! (?) | |
zstyle ':completion::complete:*' use-cache 1 | |
# case insensitive completion | |
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' | |
zstyle ':completion:*' verbose yes | |
zstyle ':completion:*:descriptions' format '%B%d%b' | |
zstyle ':completion:*:messages' format '%d' | |
zstyle ':completion:*:warnings' format 'No matches for: %d' | |
zstyle ':completion:*' group-name '' | |
#zstyle ':completion:*' completer _oldlist _expand _force_rehash _complete | |
zstyle ':completion:*' completer _expand _force_rehash _complete _approximate _ignored | |
# generate descriptions with magic. | |
zstyle ':completion:*' auto-description 'specify: %d' | |
# Don't prompt for a huge list, page it! | |
zstyle ':completion:*:default' list-prompt '%S%M matches%s' | |
# Don't prompt for a huge list, menu it! | |
zstyle ':completion:*:default' menu 'select=0' | |
# Have the newer files last so I see them first | |
zstyle ':completion:*' file-sort modification reverse | |
# color code completion!!!! Wohoo! | |
zstyle ':completion:*' list-colors "=(#b) #([0-9]#)*=36=31" | |
unsetopt LIST_AMBIGUOUS | |
setopt COMPLETE_IN_WORD | |
# Separate man page sections. Neat. | |
zstyle ':completion:*:manuals' separate-sections true | |
# complete with a menu for xwindow ids | |
zstyle ':completion:*:windows' menu on=0 | |
zstyle ':completion:*:expand:*' tag-order all-expansions | |
# more errors allowed for large words and fewer for small words | |
zstyle ':completion:*:approximate:*' max-errors 'reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) )' | |
# Errors format | |
zstyle ':completion:*:corrections' format '%B%d (errors %e)%b' | |
# Don't complete stuff already on the line | |
zstyle ':completion::*:(rm|vi):*' ignore-line true | |
# Don't complete directory we are already in (../here) | |
zstyle ':completion:*' ignore-parents parent pwd | |
zstyle ':completion::approximate*:*' prefix-needed false | |
#}}} | |
#{{{ Key bindings | |
# Who doesn't want home and end to work? | |
bindkey '\e[1~' beginning-of-line | |
bindkey '\e[4~' end-of-line | |
# Incremental search is elite! | |
bindkey -M vicmd "/" history-incremental-search-backward | |
bindkey -M vicmd "?" history-incremental-search-forward | |
# Search based on what you typed in already | |
bindkey -M vicmd "//" history-beginning-search-backward | |
bindkey -M vicmd "??" history-beginning-search-forward | |
bindkey "\eOP" run-help | |
# oh wow! This is killer... try it! | |
bindkey -M vicmd "q" push-line | |
# Ensure that arrow keys work as they should | |
bindkey '\e[A' up-line-or-history | |
bindkey '\e[B' down-line-or-history | |
bindkey '\eOA' up-line-or-history | |
bindkey '\eOB' down-line-or-history | |
bindkey '\e[C' forward-char | |
bindkey '\e[D' backward-char | |
bindkey '\eOC' forward-char | |
bindkey '\eOD' backward-char | |
bindkey -M viins 'jj' vi-cmd-mode | |
bindkey -M vicmd 'u' undo | |
# Rebind the insert key. I really can't stand what it currently does. | |
bindkey '\e[2~' overwrite-mode | |
# Rebind the delete key. Again, useless. | |
bindkey '\e[3~' delete-char | |
bindkey -M vicmd '!' edit-command-output | |
# it's like, space AND completion. Gnarlbot. | |
bindkey -M viins ' ' magic-space | |
#}}} | |
#{{{ History Stuff | |
# Where it gets saved | |
HISTFILE=~/.history | |
# Remember about a years worth of history (AWESOME) | |
SAVEHIST=10000 | |
HISTSIZE=10000 | |
# Don't overwrite, append! | |
setopt APPEND_HISTORY | |
# Write after each command | |
# setopt INC_APPEND_HISTORY | |
# Killer: share history between multiple shells | |
setopt SHARE_HISTORY | |
# If I type cd and then cd again, only save the last one | |
setopt HIST_IGNORE_DUPS | |
# Even if there are commands inbetween commands that are the same, still only save the last one | |
setopt HIST_IGNORE_ALL_DUPS | |
# Pretty Obvious. Right? | |
setopt HIST_REDUCE_BLANKS | |
# If a line starts with a space, don't save it. | |
setopt HIST_IGNORE_SPACE | |
setopt HIST_NO_STORE | |
# When using a hist thing, make a newline show the change before executing it. | |
setopt HIST_VERIFY | |
# Save the time and how long a command ran | |
setopt EXTENDED_HISTORY | |
setopt HIST_SAVE_NO_DUPS | |
setopt HIST_EXPIRE_DUPS_FIRST | |
setopt HIST_FIND_NO_DUPS | |
#}}} | |
_force_rehash() { | |
(( CURRENT == 1 )) && rehash | |
return 1 # Because we didn't really complete anything | |
} | |
#}}} | |
#{{{ ZSH Modules | |
autoload -U compinit promptinit zcalc zsh-mime-setup | |
compinit | |
promptinit | |
zsh-mime-setup | |
#}}} | |
alias rake="noglob rake" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment