Use prezto instead of oh-my-zsh
This commit is contained in:
parent
6f939253e7
commit
425702a23b
|
@ -7,9 +7,9 @@ task :zsh => 'zsh:update'
|
||||||
namespace :zsh do
|
namespace :zsh do
|
||||||
|
|
||||||
task :install do
|
task :install do
|
||||||
unless Dir.exists?(File.expand_path("~/.oh-my-zsh"))
|
unless Dir.exists?(File.expand_path("~/.zprezto"))
|
||||||
echo "Installing oh-my-zsh"
|
echo "Installing prezto"
|
||||||
github 'robbyrussell/oh-my-zsh', '~/.oh-my-zsh'
|
github 'hlissner/prezto', '~/.zprezto'
|
||||||
end
|
end
|
||||||
sh_safe '~/.dotfiles/install.sh'
|
sh_safe '~/.dotfiles/install.sh'
|
||||||
|
|
||||||
|
@ -21,12 +21,13 @@ namespace :zsh do
|
||||||
end
|
end
|
||||||
|
|
||||||
task :update => "zsh:install" do
|
task :update => "zsh:install" do
|
||||||
echo "Updating oh-my-zsh"
|
echo "Updating zprezto"
|
||||||
sh_safe 'cd ~/.oh-my-zsh && git pull'
|
sh_safe 'cd ~/.zprezto && git pull'
|
||||||
|
# TODO: pull from parent repo
|
||||||
end
|
end
|
||||||
|
|
||||||
task :remove do
|
task :remove do
|
||||||
sh_safe 'rm -rf ~/.oh-my-zsh' if Dir.exists?(File.expand_path("~/.oh-my-zsh"))
|
sh_safe 'rm -rf ~/.zprezto' if Dir.exists?(File.expand_path("~/.zprezto"))
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
10
zlogin
Normal file
10
zlogin
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Executes commands at login post-zshrc.
|
||||||
|
|
||||||
|
# Execute code that does not affect the current session in the background.
|
||||||
|
{
|
||||||
|
# Compile the completion dump to increase startup speed.
|
||||||
|
zcompdump="${ZDOTDIR:-$HOME}/.zcompdump"
|
||||||
|
if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then
|
||||||
|
zcompile "$zcompdump"
|
||||||
|
fi
|
||||||
|
} &!
|
69
zprofile
Normal file
69
zprofile
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
# Executes commands at login pre-zshrc.
|
||||||
|
|
||||||
|
# Browser
|
||||||
|
[[ "$OSTYPE" == darwin* ]] && export BROWSER='open'
|
||||||
|
|
||||||
|
|
||||||
|
# Editors
|
||||||
|
export EDITOR='vim'
|
||||||
|
export VISUAL='vim'
|
||||||
|
export PAGER='less'
|
||||||
|
export RUBYOPT=rubygems
|
||||||
|
|
||||||
|
|
||||||
|
# Language
|
||||||
|
|
||||||
|
if [[ -z "$LANG" ]]; then
|
||||||
|
export LANG='en_US.UTF-8'
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Paths
|
||||||
|
|
||||||
|
# Ensure path arrays do not contain duplicates.
|
||||||
|
typeset -gU cdpath fpath mailpath path
|
||||||
|
|
||||||
|
# Set the the list of directories that cd searches.
|
||||||
|
# cdpath=(
|
||||||
|
# $cdpath
|
||||||
|
# )
|
||||||
|
|
||||||
|
# Set the list of directories that Zsh searches for programs.
|
||||||
|
path=(
|
||||||
|
$HOME/.dotfiles/bin
|
||||||
|
$HOME/.dotfiles/bin/`hostname`
|
||||||
|
/usr/local/{bin,sbin}
|
||||||
|
/usr/local/opt/{rb,py}env
|
||||||
|
$path
|
||||||
|
)
|
||||||
|
|
||||||
|
fpath=(
|
||||||
|
$HOME/.zsh/themes
|
||||||
|
$fpath
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Less
|
||||||
|
|
||||||
|
# Set the default Less options.
|
||||||
|
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
|
||||||
|
# Remove -X and -F (exit if the content fits on one screen) to enable it.
|
||||||
|
export LESS='-F -g -i -M -R -S -w -X -z-4'
|
||||||
|
|
||||||
|
# Set the Less input preprocessor.
|
||||||
|
if (( $+commands[lesspipe.sh] )); then
|
||||||
|
export LESSOPEN='| /usr/bin/env lesspipe.sh %s 2>&-'
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Temporary Files
|
||||||
|
|
||||||
|
if [[ ! -d "$TMPDIR" ]]; then
|
||||||
|
export TMPDIR="/tmp/$USER"
|
||||||
|
mkdir -p -m 700 "$TMPDIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
TMPPREFIX="${TMPDIR%/}/zsh"
|
||||||
|
if [[ ! -d "$TMPPREFIX" ]]; then
|
||||||
|
mkdir -p "$TMPPREFIX"
|
||||||
|
fi
|
50
zsh/aliases
50
zsh/aliases
|
@ -2,74 +2,51 @@
|
||||||
|
|
||||||
# GIT
|
# GIT
|
||||||
if command_exists 'git'; then
|
if command_exists 'git'; then
|
||||||
# On top of oh-my-zsh's git aliases
|
alias ga='git add'
|
||||||
alias gap='ga -p'
|
alias gap='git add --patch'
|
||||||
alias gt='git tag'
|
alias gt='git tag'
|
||||||
alias gtl='git describe --tags --abbrev=0'
|
alias gtl='git describe --tags --abbrev=0'
|
||||||
alias gpb='git push origin'
|
# alias gpb='git push origin'
|
||||||
|
|
||||||
git-new-root() {
|
git-move-root() {
|
||||||
git filter-branch --subdirectory-filter "$@" --prune-empty -- --all
|
git filter-branch --subdirectory-filter "$@" --prune-empty -- --all
|
||||||
}
|
}
|
||||||
# find oh-my-zsh's here: ~/.oh-my-zsh/plugins/git/git.plugin.zsh
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# OS-specific aliases
|
# OS-specific aliases
|
||||||
if is_linux; then
|
if [[ "$OSTYPE" != darwin* ]]; then
|
||||||
alias ipt='sudo iptables'
|
|
||||||
elif is_mac; then
|
|
||||||
alias b='brew'
|
alias b='brew'
|
||||||
alias ql='quicklook'
|
|
||||||
|
|
||||||
alias v='vim'
|
alias v='vim'
|
||||||
# Open file in emacs server; must be running!
|
# Open file in emacs server; must be running!
|
||||||
alias e="emacsclient -n"
|
alias e="emacsclient -n"
|
||||||
|
|
||||||
o() {
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
open .
|
|
||||||
else
|
else
|
||||||
open $@
|
alias ipt='sudo iptables'
|
||||||
fi
|
fi
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Tmux
|
|
||||||
command_exists 'tmux' && alias t='tmux -CC'
|
|
||||||
|
|
||||||
# transmission-remote
|
# transmission-remote
|
||||||
if command_exists 'transmission-remote'; then
|
if command_exists 'transmission-remote'; then
|
||||||
|
|
||||||
alias bt="transmission-remote server"
|
alias bt="transmission-remote server"
|
||||||
alias btl="bt -l"
|
alias btl="bt -l"
|
||||||
alias bta="bt --add"
|
alias bta="bt --add"
|
||||||
|
|
||||||
btr() { bt -t$1 -r }
|
btr() { bt -t$1 -r }
|
||||||
bts() { bt -t$1 -S }
|
bts() { bt -t$1 -S }
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
alias va='vagrant'
|
alias va='vagrant'
|
||||||
|
|
||||||
# Interpreters
|
# Interpreters
|
||||||
command_exists "rbenv" && alias rbe='rbenv'
|
alias rbe='rbenv'
|
||||||
command_exists "ruby" && alias rb='ruby'
|
alias rb='ruby'
|
||||||
command_exists "pyenv" && alias pye='pyenv'
|
alias pye='pyenv'
|
||||||
command_exists "python" && alias py='python'
|
alias py='python'
|
||||||
command_exists "python3" && alias py3='python3'
|
alias py3='python3'
|
||||||
[ -e /Applications/love.app ] && alias love="/Applications/love.app/Contents/MacOS/love"
|
[ -e /Applications/love.app ] && alias love="/Applications/love.app/Contents/MacOS/love"
|
||||||
|
|
||||||
# Shell conveniences
|
# Shell conveniences
|
||||||
alias ls='ls --color=auto'
|
alias \\q='exit'
|
||||||
alias l='ls -1'
|
|
||||||
alias ll='ls -l'
|
|
||||||
alias la='ls -la'
|
|
||||||
alias l.='ls -Ad .*'
|
|
||||||
alias du='du -h -d 1'
|
|
||||||
alias q='exit'
|
|
||||||
|
|
||||||
alias sha1='openssl sha1'
|
alias sha1='openssl sha1'
|
||||||
alias mkdir='mkdir -pv'
|
|
||||||
alias header='curl -I'
|
alias header='curl -I'
|
||||||
|
|
||||||
# Resume download if possible
|
# Resume download if possible
|
||||||
|
@ -81,9 +58,8 @@ alias sudo='sudo '
|
||||||
# Make a directory and change to it
|
# Make a directory and change to it
|
||||||
function mkd { mkdir "$@" && cd "$@" }
|
function mkd { mkdir "$@" && cd "$@" }
|
||||||
|
|
||||||
alias reload='exec $SHELL -l'
|
|
||||||
alias c='clear'
|
alias c='clear'
|
||||||
alias r='rake -g'
|
alias r='noglob rake -g'
|
||||||
|
|
||||||
# Disable zsh glob syntax on the rake command
|
# Disable zsh glob syntax on the rake command
|
||||||
alias rake='noglob rake'
|
alias rake='noglob rake'
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
unsetopt menu_complete # do not autoselect the first completion entry
|
|
||||||
unsetopt flowcontrol
|
|
||||||
setopt auto_menu # show completion menu on succesive tab press
|
|
||||||
setopt complete_in_word
|
|
||||||
setopt always_to_end
|
|
||||||
|
|
||||||
WORDCHARS=''
|
|
||||||
|
|
||||||
zmodload -i zsh/complist
|
|
||||||
|
|
||||||
zstyle ':completion:*' completer _expand _complete _ignored _approximate
|
|
||||||
zstyle ':completion:*' glob on
|
|
||||||
|
|
||||||
# case-insensitive (all),partial-word and then substring completion
|
|
||||||
if [ "x$CASE_SENSITIVE" = "xtrue" ]; then
|
|
||||||
zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
|
||||||
unset CASE_SENSITIVE
|
|
||||||
else
|
|
||||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
|
||||||
fi
|
|
||||||
|
|
||||||
zstyle ':completion:*' list-colors ''
|
|
||||||
|
|
||||||
# should this be in keybindings?
|
|
||||||
bindkey -M menuselect '^o' accept-and-infer-next-history
|
|
||||||
|
|
||||||
zstyle ':completion:*:*:*:*:*' menu select
|
|
||||||
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
|
|
||||||
zstyle ':completion:*:*:*:*:processes' command "ps -u `whoami` -o pid,user,comm -w -w"
|
|
||||||
|
|
||||||
# disable named-directories autocompletion
|
|
||||||
zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories
|
|
||||||
cdpath=(.)
|
|
||||||
|
|
||||||
# use /etc/hosts and known_hosts for hostname completion
|
|
||||||
[ -r ~/.ssh/known_hosts ] && _ssh_hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_hosts=()
|
|
||||||
hosts=(
|
|
||||||
"$_ssh_hosts[@]"
|
|
||||||
"$HOST"
|
|
||||||
localhost
|
|
||||||
)
|
|
||||||
zstyle ':completion:*:hosts' $hosts
|
|
||||||
|
|
||||||
# Use caching so that commands like apt and dpkg complete are useable
|
|
||||||
zstyle ':completion::complete:*' use-cache 1
|
|
||||||
zstyle ':completion::complete:*' cache-path $ZSH/cache/
|
|
||||||
|
|
||||||
# Don't complete uninteresting users
|
|
||||||
zstyle ':completion:*:*:*:users' ignored-patterns \
|
|
||||||
adm amanda apache avahi beaglidx bin cacti canna clamav daemon \
|
|
||||||
dbus distcache dovecot fax ftp games gdm gkrellmd gopher \
|
|
||||||
hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \
|
|
||||||
mailman mailnull mldonkey mysql nagios \
|
|
||||||
named netdump news nfsnobody nobody nscd ntp nut nx openvpn \
|
|
||||||
operator pcap postfix postgres privoxy pulse pvm quagga radvd \
|
|
||||||
rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs
|
|
||||||
|
|
||||||
# ... unless we really want to.
|
|
||||||
zstyle '*' single-ignored show
|
|
||||||
|
|
||||||
if [ "x$COMPLETION_WAITING_DOTS" = "xtrue" ]; then
|
|
||||||
expand-or-complete-with-dots() {
|
|
||||||
echo -n "\e[31m......\e[0m"
|
|
||||||
zle expand-or-complete
|
|
||||||
zle redisplay
|
|
||||||
}
|
|
||||||
zle -N expand-or-complete-with-dots
|
|
||||||
bindkey "^I" expand-or-complete-with-dots
|
|
||||||
fi
|
|
||||||
|
|
||||||
# expand globs on tab
|
|
||||||
zstyle ':completion:*:expand:*' tag-order all-expansions
|
|
||||||
zstyle ':completion:*:history-words' remove-all-dups yes
|
|
||||||
|
|
||||||
zstyle ':completion:*:manuals' separate-sections true
|
|
||||||
zstyle ':completion:*:manuals.*' insert-sections true
|
|
||||||
|
|
||||||
autoload -Uz compinit
|
|
||||||
compinit
|
|
79
zsh/config
79
zsh/config
|
@ -2,90 +2,13 @@
|
||||||
|
|
||||||
# Disable autocorrect behavior, very annoying!
|
# Disable autocorrect behavior, very annoying!
|
||||||
unsetopt correct_all
|
unsetopt correct_all
|
||||||
|
# Don't wait for keys (snappier vi-mode)
|
||||||
# HISTORY
|
|
||||||
HISTFILE=/tmp/histfile
|
|
||||||
HISTSIZE=5000
|
|
||||||
SAVEHIST=5000
|
|
||||||
|
|
||||||
# No longer prompt to update oh-my-zsh
|
|
||||||
DISABLE_AUTO_UPDATE="true"
|
|
||||||
|
|
||||||
# Don't overwrite, append!
|
|
||||||
setopt APPEND_HISTORY
|
|
||||||
# Sharing history between shell instances
|
|
||||||
setopt SHARE_HISTORY
|
|
||||||
# If I type cd and then cd again, only save the last one
|
|
||||||
setopt HIST_IGNORE_DUPS
|
|
||||||
# Don't save lines that are just whitespace
|
|
||||||
setopt HIST_IGNORE_SPACE
|
|
||||||
setopt HIST_NO_STORE
|
|
||||||
# Reduce extra whitespace
|
|
||||||
setopt HIST_REDUCE_BLANKS
|
|
||||||
# Save time and how long a command ran
|
|
||||||
setopt EXTENDED_HISTORY
|
|
||||||
# Beep boop
|
|
||||||
setopt NO_BEEP
|
|
||||||
|
|
||||||
setopt EXTENDED_GLOB
|
|
||||||
setopt PROMPT_SUBST
|
|
||||||
setopt AUTO_PUSHD
|
|
||||||
setopt PUSHD_IGNORE_DUPS
|
|
||||||
|
|
||||||
export KEYTIMEOUT=1
|
export KEYTIMEOUT=1
|
||||||
export EDITOR=vim
|
|
||||||
export RUBYOPT=rubygems
|
|
||||||
|
|
||||||
# COMPLETION_WAITING_DOTS="true"
|
|
||||||
|
|
||||||
|
|
||||||
##################################
|
|
||||||
# Make zsh prompt act like vi
|
|
||||||
|
|
||||||
zle -N edit-command-line
|
zle -N edit-command-line
|
||||||
bindkey -v
|
bindkey -v
|
||||||
bindkey '^f' edit-command-line
|
bindkey '^f' edit-command-line
|
||||||
|
|
||||||
bindkey '^r' history-incremental-search-backward
|
|
||||||
bindkey '^w' backward-kill-word
|
bindkey '^w' backward-kill-word
|
||||||
bindkey '^a' beginning-of-line
|
bindkey '^a' beginning-of-line
|
||||||
bindkey '^e' end-of-line
|
bindkey '^e' end-of-line
|
||||||
|
|
||||||
if ! [ "$EMACS" ]; then
|
|
||||||
bindkey ${terminfo[kdch1]} delete-char
|
|
||||||
|
|
||||||
# Switch between block and line cursor (Only in iterm)
|
|
||||||
if is_mac; then
|
|
||||||
function zle-keymap-select zle-line-init {
|
|
||||||
# change cursor shape in iTerm2
|
|
||||||
case $KEYMAP in
|
|
||||||
vicmd) print -n -- "\E]50;CursorShape=0\C-G";; # block cursor
|
|
||||||
viins|main) print -n -- "\E]50;CursorShape=1\C-G";; # line cursor
|
|
||||||
esac
|
|
||||||
|
|
||||||
zle reset-prompt
|
|
||||||
zle -R
|
|
||||||
}
|
|
||||||
|
|
||||||
function zle-line-finish {
|
|
||||||
print -n -- "\E]50;CursorShape=0\C-G" # block cursor
|
|
||||||
}
|
|
||||||
|
|
||||||
zle -N zle-line-init
|
|
||||||
zle -N zle-line-finish
|
|
||||||
zle -N zle-keymap-select
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Switch between block and line cursor (Only in iterm)
|
|
||||||
autoload colors
|
|
||||||
if [[ "$terminfo[colors]" -gt 8 ]]; then
|
|
||||||
colors
|
|
||||||
fi
|
|
||||||
for COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do
|
|
||||||
eval $COLOR='$fg_no_bold[${(L)COLOR}]'
|
|
||||||
eval BOLD_$COLOR='$fg_bold[${(L)COLOR}]'
|
|
||||||
done
|
|
||||||
eval RESET='$reset_color'
|
|
||||||
|
|
||||||
# print -n -- "\E]50;CursorShape=1\C-G"
|
|
||||||
|
|
|
@ -5,57 +5,4 @@ function command_exists {
|
||||||
command -v "$1" &> /dev/null
|
command -v "$1" &> /dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
# OS detection
|
|
||||||
function is_deb {
|
|
||||||
command_exists apt-get
|
|
||||||
}
|
|
||||||
|
|
||||||
function is_mac {
|
|
||||||
[[ $(uname) == 'Darwin' ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
function is_linux {
|
|
||||||
[[ $(uname) == 'Linux' ]]
|
|
||||||
}
|
|
||||||
|
|
||||||
# Extract a compressed file with the appropriate command
|
|
||||||
function unpack {
|
|
||||||
if [ -f "$1" ]; then
|
|
||||||
case $1 in
|
|
||||||
*.tar.bz2) tar xjf $1 ;;
|
|
||||||
*.tar.gz) tar xzf $1 ;;
|
|
||||||
*.bz2) bunzip2 $1 ;;
|
|
||||||
*.rar) unrar x $1 ;;
|
|
||||||
*.gz) gunzip $1 ;;
|
|
||||||
*.tar) tar xf $1 ;;
|
|
||||||
*.tbz2) tar xjf $1 ;;
|
|
||||||
*.tgz) tar xzf $1 ;;
|
|
||||||
*.zip) unzip $1 ;;
|
|
||||||
*.Z) uncompress $1 ;;
|
|
||||||
*) echo "'$1' cannot be extracted via extract()" ;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
echo "'$1' is not a valid file"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if is_mac; then
|
|
||||||
|
|
||||||
# Change working directory to the top-most Finder window location
|
|
||||||
function cdf() { # short for `cdfinder`
|
|
||||||
cd "$(osascript -e 'tell app "Finder" to POSIX path of (insertion location as alias)')"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Open a file in Mac OS's quick-look
|
|
||||||
function quicklook {
|
|
||||||
(( $# > 0 )) && qlmanage -p $* &>/dev/null &
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check to see if the (mac) app exists
|
|
||||||
function app_exists {
|
|
||||||
[ -d /Applications/"$1" ] || [ -e /Applications/"$1".app ] || [ -e ~/Applications/"$1".app ]
|
|
||||||
}
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
# vim:set ft=zsh:
|
# vim:set ft=zsh:
|
||||||
|
|
41
zsh/paths
41
zsh/paths
|
@ -1,41 +0,0 @@
|
||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
function _init_paths {
|
|
||||||
export PATH=/usr/bin:/bin:/usr/sbin
|
|
||||||
|
|
||||||
# Setup homebrew paths
|
|
||||||
if [ -e /usr/local/bin/brew ]; then
|
|
||||||
local BREWDIR=`/usr/local/bin/brew --prefix`
|
|
||||||
|
|
||||||
PATH=$BREWDIR/bin:$PATH
|
|
||||||
|
|
||||||
local COREUTILS=`brew --prefix coreutils`
|
|
||||||
if [ -d "$COREUTILS" ]; then
|
|
||||||
PATH="$COREUTILS/libexec/gnubin:$PATH"
|
|
||||||
MANPATH="$COREUTILS/libexec/gnuman:$MANPATH"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# rb/pyenv paths
|
|
||||||
local RBENV_DIR="`brew --prefix rbenv`"
|
|
||||||
local PYENV_DIR="`brew --prefix pyenv`"
|
|
||||||
if [ -d "$RBENV_DIR" ]; then
|
|
||||||
PATH=$RBENV_DIR/bin:$PATH
|
|
||||||
export RBENV_ROOT=$RBENV_DIR
|
|
||||||
fi
|
|
||||||
if [ -d "$PYENV_DIR" ]; then
|
|
||||||
PATH=$PYENV_DIR/bin:$PATH
|
|
||||||
export PYENV_ROOT=$PYENV_DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
# hostname-specific bins
|
|
||||||
[ -d $HOME/.dotfiles/bin/`hostname` ] && PATH=$HOME/.dotfiles/bin/`hostname`:$PATH
|
|
||||||
|
|
||||||
# global bins
|
|
||||||
PATH=$HOME/.dotfiles/bin:$PATH
|
|
||||||
}
|
|
||||||
|
|
||||||
_init_paths
|
|
||||||
unset -f _init_paths
|
|
||||||
|
|
||||||
# vim:set ft=zsh:
|
|
114
zsh/preztorc
Normal file
114
zsh/preztorc
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
# Sets Prezto options.
|
||||||
|
|
||||||
|
# General
|
||||||
|
|
||||||
|
zstyle ':prezto:module:prompt' theme 'my'
|
||||||
|
|
||||||
|
# Set case-sensitivity for completion, history lookup, etc.
|
||||||
|
# zstyle ':prezto:*:*' case-sensitive 'yes'
|
||||||
|
|
||||||
|
# Color output (auto set to 'no' on dumb terminals).
|
||||||
|
zstyle ':prezto:*:*' color 'yes'
|
||||||
|
|
||||||
|
# Set the Zsh modules to load (man zshmodules).
|
||||||
|
# zstyle ':prezto:load' zmodule 'attr' 'stat'
|
||||||
|
|
||||||
|
# Set the Zsh functions to load (man zshcontrib).
|
||||||
|
# zstyle ':prezto:load' zfunction 'zargs' 'zmv'
|
||||||
|
|
||||||
|
# Set the Prezto modules to load (browse modules).
|
||||||
|
# The order matters.
|
||||||
|
zstyle ':prezto:load' pmodule \
|
||||||
|
'environment' \
|
||||||
|
'terminal' \
|
||||||
|
'editor' \
|
||||||
|
'opp' \
|
||||||
|
'history' \
|
||||||
|
'history-substring-search' \
|
||||||
|
'directory' \
|
||||||
|
'spectrum' \
|
||||||
|
'utility' \
|
||||||
|
'completion' \
|
||||||
|
'prompt' \
|
||||||
|
'git' \
|
||||||
|
'ssh' \
|
||||||
|
'osx'
|
||||||
|
|
||||||
|
|
||||||
|
# Editor
|
||||||
|
|
||||||
|
# Set the key mapping style to 'emacs' or 'vi'.
|
||||||
|
zstyle ':prezto:module:editor' key-bindings 'vi'
|
||||||
|
|
||||||
|
# Auto convert .... to ../..
|
||||||
|
zstyle ':prezto:module:editor' dot-expansion 'yes'
|
||||||
|
|
||||||
|
|
||||||
|
# Git
|
||||||
|
|
||||||
|
# Ignore submodules when they are 'dirty', 'untracked', 'all', or 'none'.
|
||||||
|
zstyle ':prezto:module:git:status:ignore' submodules 'all'
|
||||||
|
|
||||||
|
|
||||||
|
# GNU Utility
|
||||||
|
|
||||||
|
# Set the command prefix on non-GNU systems.
|
||||||
|
# zstyle ':prezto:module:gnu-utility' prefix 'g'
|
||||||
|
|
||||||
|
|
||||||
|
# History Substring Search
|
||||||
|
|
||||||
|
# Set the query found color.
|
||||||
|
# zstyle ':prezto:module:history-substring-search:color' found ''
|
||||||
|
|
||||||
|
# Set the query not found color.
|
||||||
|
# zstyle ':prezto:module:history-substring-search:color' not-found ''
|
||||||
|
|
||||||
|
# Set the search globbing flags.
|
||||||
|
# zstyle ':prezto:module:history-substring-search' globbing-flags ''
|
||||||
|
|
||||||
|
|
||||||
|
# SSH
|
||||||
|
|
||||||
|
# Set the SSH identities to load into the agent.
|
||||||
|
zstyle ':prezto:module:ssh:load' identities 'id_rsa' 'id_rsa2' 'id_github'
|
||||||
|
|
||||||
|
|
||||||
|
# Syntax Highlighting
|
||||||
|
|
||||||
|
# Set syntax highlighters.
|
||||||
|
# By default, only the main highlighter is enabled.
|
||||||
|
# zstyle ':prezto:module:syntax-highlighting' highlighters \
|
||||||
|
# 'main' \
|
||||||
|
# 'brackets' \
|
||||||
|
# 'pattern' \
|
||||||
|
# 'cursor' \
|
||||||
|
# 'root'
|
||||||
|
#
|
||||||
|
# Set syntax highlighting styles.
|
||||||
|
# zstyle ':prezto:module:syntax-highlighting' styles \
|
||||||
|
# 'builtin' 'bg=blue' \
|
||||||
|
# 'command' 'bg=blue' \
|
||||||
|
# 'function' 'bg=blue'
|
||||||
|
|
||||||
|
|
||||||
|
# Terminal
|
||||||
|
|
||||||
|
# Auto set the tab and window titles.
|
||||||
|
zstyle ':prezto:module:terminal' auto-title 'yes'
|
||||||
|
|
||||||
|
# Set the window title format.
|
||||||
|
# zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s'
|
||||||
|
|
||||||
|
# Set the tab title format.
|
||||||
|
# zstyle ':prezto:module:terminal:tab-title' format '%m: %s'
|
||||||
|
|
||||||
|
|
||||||
|
# Tmux
|
||||||
|
|
||||||
|
# Auto start a session when Zsh is launched in a local terminal.
|
||||||
|
# zstyle ':prezto:module:tmux:auto-start' local 'yes'
|
||||||
|
|
||||||
|
# Auto start a session when Zsh is launched in a SSH connection.
|
||||||
|
# zstyle ':prezto:module:tmux:auto-start' remote 'yes'
|
||||||
|
|
186
zsh/prompt
186
zsh/prompt
|
@ -1,93 +1,117 @@
|
||||||
#!/bin/zsh
|
#!/bin/zsh
|
||||||
|
|
||||||
|
zstyle ':prezto:module:git:info:branch' format 'branch:%b'
|
||||||
|
zstyle ':prezto:module:git:info:remote' format 'remote:%R'
|
||||||
|
zstyle ':prezto:module:git:info:keys' format \
|
||||||
|
'prompt' ' git(%b)' \
|
||||||
|
'rprompt' '[%R]'
|
||||||
|
|
||||||
|
function prompt_custom_preexec {
|
||||||
|
if (( $+functions[git-info] )); then
|
||||||
|
git-info
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function prompt_custom_setup {
|
||||||
|
PROMPT='%m%# '
|
||||||
|
RPROMPT=''
|
||||||
|
}
|
||||||
|
|
||||||
|
# autoload colors
|
||||||
|
# if [[ "$terminfo[colors]" -gt 8 ]]; then
|
||||||
|
# colors
|
||||||
|
# fi
|
||||||
|
|
||||||
# GIT Stuff
|
# GIT Stuff
|
||||||
ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[white]%}"
|
# ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[white]%}"
|
||||||
ZSH_THEME_GIT_PROMPT_SUFFIX=""
|
# ZSH_THEME_GIT_PROMPT_SUFFIX=""
|
||||||
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}+%{$fg[white]%}"
|
# ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}+%{$fg[white]%}"
|
||||||
# ZSH_THEME_GIT_PROMPT_CLEAN=""
|
# ZSH_THEME_GIT_PROMPT_CLEAN=""
|
||||||
|
|
||||||
##################
|
##################
|
||||||
# Build Prompt #
|
# Build Prompt #
|
||||||
##################
|
##################
|
||||||
|
|
||||||
function _prompt_pwd {
|
# function _prompt_pwd {
|
||||||
SHORTPWD=`print -Pn "%3~"`
|
# SHORTPWD=`print -Pn "%3~"`
|
||||||
|
#
|
||||||
|
# if [[ -n "${ZSH_VERSION:-}" ]]
|
||||||
|
# then _pwd="${SHORTPWD[0,1]}"
|
||||||
|
# else _pwd="${SHORTPWD:0:1}"
|
||||||
|
# fi
|
||||||
|
#
|
||||||
|
# [[ $_pwd =~ "[^/~]" ]] && SHORTPWD=".../$SHORTPWD"
|
||||||
|
#
|
||||||
|
# echo -n $SHORTPWD
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# # function _prompt_git {
|
||||||
|
# # [ "`git_prompt_info`" ] && echo -n "$(git_prompt_info)"
|
||||||
|
# # }
|
||||||
|
#
|
||||||
|
# function _prompt_vimode {
|
||||||
|
# # The prompt turns green in command mode, and red in insert mode
|
||||||
|
# PROMPT="$"
|
||||||
|
#
|
||||||
|
# MODE_INDICATOR="%{$fg[green]%}%{$PROMPT%}"
|
||||||
|
# MODE_PROMPT="${${KEYMAP/vicmd/$MODE_INDICATOR}/(main|viins)/}"
|
||||||
|
# if [ $MODE_PROMPT ]; then
|
||||||
|
# echo -n "$MODE_PROMPT "
|
||||||
|
# else
|
||||||
|
# echo -n "$PROMPT "
|
||||||
|
# fi
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# function _prompt_rbenv {
|
||||||
|
# local ruby_version
|
||||||
|
# ruby_version="$(rbenv local 2>/dev/null)"
|
||||||
|
# [ "$?" -eq 0 ] && echo -n " %{$fx[bold]%}%{$fg[red]%}:$ruby_version"
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# function _prompt_pyenv {
|
||||||
|
# local py_version
|
||||||
|
# py_version="$(pyenv local 2>/dev/null)"
|
||||||
|
# [ "$?" -eq 0 ] && echo -n " %{$fx[bold]%}%{$fg[yellow]%}:$py_version"
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# # prompts
|
||||||
|
# function _lprompt {
|
||||||
|
# # Start each prompt with a newline
|
||||||
|
# echo
|
||||||
|
#
|
||||||
|
# # Show the hostname if this is an SSH session
|
||||||
|
# if [ ! -z "$SSH_CLIENT" ]; then
|
||||||
|
# echo -n "%{$fg[blue]%}"
|
||||||
|
# if is_mac; then
|
||||||
|
# echo -n "$(hostname | sed -e 's/\.local$//') "
|
||||||
|
# else
|
||||||
|
# echo -n "$(hostname) "
|
||||||
|
# fi
|
||||||
|
# fi
|
||||||
|
#
|
||||||
|
# # Print the prompt
|
||||||
|
# echo -n "$fg[red]$FX[bold]$(_prompt_vimode)$reset_color"
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# function _rprompt {
|
||||||
|
# # Make the rprompt a bright grey to set it apart
|
||||||
|
# echo -n "%{$FG[245]%}"
|
||||||
|
# echo -n "$(_prompt_pwd)"
|
||||||
|
#
|
||||||
|
# # Show the branch/status if in a git repo
|
||||||
|
# # echo -n '$(_prompt_git)'
|
||||||
|
#
|
||||||
|
# # Display the local version of rb/pyenv
|
||||||
|
# command_exists rbenv && echo -n "$(_prompt_rbenv)"
|
||||||
|
# command_exists pyenv && echo -n "$(_prompt_pyenv)"
|
||||||
|
#
|
||||||
|
# # Reset formatting for command output
|
||||||
|
# echo -n "$reset_color"
|
||||||
|
# }
|
||||||
|
|
||||||
if [[ -n "${ZSH_VERSION:-}" ]]
|
# PROMPT="$(_lprompt)"
|
||||||
then _pwd="${SHORTPWD[0,1]}"
|
# RPROMPT="$(_rprompt)"
|
||||||
else _pwd="${SHORTPWD:0:1}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
[[ $_pwd =~ "[^/~]" ]] && SHORTPWD=".../$SHORTPWD"
|
|
||||||
|
|
||||||
echo -n $SHORTPWD
|
|
||||||
}
|
|
||||||
|
|
||||||
function _prompt_git {
|
|
||||||
[ "`git_prompt_info`" ] && echo -n "$(git_prompt_info)"
|
|
||||||
}
|
|
||||||
|
|
||||||
function _prompt_vimode {
|
|
||||||
# The prompt turns green in command mode, and red in insert mode
|
|
||||||
PROMPT="$"
|
|
||||||
|
|
||||||
MODE_INDICATOR="%{$fg[green]%}%{$PROMPT%}"
|
|
||||||
MODE_PROMPT="${${KEYMAP/vicmd/$MODE_INDICATOR}/(main|viins)/}"
|
|
||||||
if [ $MODE_PROMPT ]; then
|
|
||||||
echo -n "$MODE_PROMPT "
|
|
||||||
else
|
|
||||||
echo -n "$PROMPT "
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function _prompt_rbenv {
|
|
||||||
local ruby_version
|
|
||||||
ruby_version="$(rbenv local 2>/dev/null)"
|
|
||||||
[ "$?" -eq 0 ] && echo -n " %{$fx[bold]%}%{$fg[red]%}:$ruby_version"
|
|
||||||
}
|
|
||||||
|
|
||||||
function _prompt_pyenv {
|
|
||||||
local py_version
|
|
||||||
py_version="$(pyenv local 2>/dev/null)"
|
|
||||||
[ "$?" -eq 0 ] && echo -n " %{$fx[bold]%}%{$fg[yellow]%}:$py_version"
|
|
||||||
}
|
|
||||||
|
|
||||||
# prompts
|
|
||||||
function _lprompt {
|
|
||||||
# Start each prompt with a newline
|
|
||||||
echo
|
|
||||||
|
|
||||||
# Show the hostname if this is an SSH session
|
|
||||||
if [ ! -z "$SSH_CLIENT" ]; then
|
|
||||||
echo -n "%{$fg[blue]%}"
|
|
||||||
if is_mac; then
|
|
||||||
echo -n "$(hostname | sed -e 's/\.local$//') "
|
|
||||||
else
|
|
||||||
echo -n "$(hostname) "
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Print the prompt
|
|
||||||
echo -n '%{$fg[red]%}%{$FX[bold]%}$(_prompt_vimode)%{$reset_color%}'
|
|
||||||
}
|
|
||||||
|
|
||||||
function _rprompt {
|
|
||||||
# Make the rprompt a bright grey to set it apart
|
|
||||||
echo -n "%{$FG[245]%}"
|
|
||||||
echo -n '$(_prompt_pwd)'
|
|
||||||
|
|
||||||
# Show the branch/status if in a git repo
|
|
||||||
echo -n '$(_prompt_git)'
|
|
||||||
|
|
||||||
# Display the local version of rb/pyenv
|
|
||||||
command_exists rbenv && echo -n '$(_prompt_rbenv)'
|
|
||||||
command_exists pyenv && echo -n '$(_prompt_pyenv)'
|
|
||||||
|
|
||||||
# Reset formatting for command output
|
|
||||||
echo -n "%{$reset_color%}"
|
|
||||||
}
|
|
||||||
|
|
||||||
PROMPT="$(_lprompt)"
|
|
||||||
RPROMPT="$(_rprompt)"
|
|
||||||
|
|
||||||
# vim:set ft=zsh:
|
# vim:set ft=zsh:
|
||||||
|
|
||||||
|
|
||||||
|
|
75
zsh/themes/prompt_my_setup
Normal file
75
zsh/themes/prompt_my_setup
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
#
|
||||||
|
# A simple theme based off sorin
|
||||||
|
#
|
||||||
|
|
||||||
|
# Load dependencies.
|
||||||
|
pmodload 'helper'
|
||||||
|
|
||||||
|
function prompt_my_pwd {
|
||||||
|
local pwd="${PWD/#$HOME/~}"
|
||||||
|
|
||||||
|
if [[ "$pwd" == (#m)[/~] ]]; then
|
||||||
|
_prompt_my_pwd="$MATCH"
|
||||||
|
unset MATCH
|
||||||
|
else
|
||||||
|
_prompt_my_pwd="${${${(@j:/:M)${(@s:/:)pwd}##.#?}:h}%/}/${pwd:t}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function prompt_my_precmd {
|
||||||
|
setopt LOCAL_OPTIONS
|
||||||
|
unsetopt XTRACE KSH_ARRAYS
|
||||||
|
|
||||||
|
# Format PWD.
|
||||||
|
prompt_my_pwd
|
||||||
|
|
||||||
|
# Get Git repository information.
|
||||||
|
if (( $+functions[git-info] )); then
|
||||||
|
git-info
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function prompt_my_setup {
|
||||||
|
setopt LOCAL_OPTIONS
|
||||||
|
unsetopt XTRACE KSH_ARRAYS
|
||||||
|
prompt_opts=(cr percent subst)
|
||||||
|
|
||||||
|
# Load required functions.
|
||||||
|
autoload -Uz add-zsh-hook
|
||||||
|
|
||||||
|
# Add hook for calling git-info before each command.
|
||||||
|
add-zsh-hook precmd prompt_my_precmd
|
||||||
|
|
||||||
|
# Set editor-info parameters.
|
||||||
|
zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
|
||||||
|
zstyle ':prezto:module:editor:info:keymap:primary' format ' %B%F{red}❯%f%b'
|
||||||
|
zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format ' %F{red}♺%f'
|
||||||
|
zstyle ':prezto:module:editor:info:keymap:alternate' format ' %B%F{green}❯%f%b'
|
||||||
|
|
||||||
|
# Set git-info parameters.
|
||||||
|
zstyle ':prezto:module:git:info' verbose 'yes'
|
||||||
|
zstyle ':prezto:module:git:info:action' format ':%%B%F{yellow}%s%f%%b'
|
||||||
|
zstyle ':prezto:module:git:info:added' format ' %%B%F{green}✚%f%%b'
|
||||||
|
zstyle ':prezto:module:git:info:ahead' format ' %%B%F{yellow}⬆%f%%b'
|
||||||
|
zstyle ':prezto:module:git:info:behind' format ' %%B%F{yellow}⬇%f%%b'
|
||||||
|
zstyle ':prezto:module:git:info:branch' format ':%F{green}%b%f'
|
||||||
|
zstyle ':prezto:module:git:info:commit' format ':%F{green}%.7c%f'
|
||||||
|
zstyle ':prezto:module:git:info:deleted' format ' %%B%F{red}✖%f%%b'
|
||||||
|
zstyle ':prezto:module:git:info:modified' format ' %%B%F{blue}✱%f%%b'
|
||||||
|
zstyle ':prezto:module:git:info:position' format ':%F{red}%p%f'
|
||||||
|
zstyle ':prezto:module:git:info:renamed' format ' %%B%F{magenta}➜%f%%b'
|
||||||
|
zstyle ':prezto:module:git:info:stashed' format ' %%B%F{cyan}✭%f%%b'
|
||||||
|
zstyle ':prezto:module:git:info:unmerged' format ' %%B%F{yellow}═%f%%b'
|
||||||
|
zstyle ':prezto:module:git:info:untracked' format ' %%B%F{white}◼%f%%b'
|
||||||
|
zstyle ':prezto:module:git:info:keys' format \
|
||||||
|
'prompt' ' %F{blue}%f$(coalesce "%b" "%p" "%c")%s' \
|
||||||
|
'rprompt' '%A%B%S%a%d%m%r%U%u'
|
||||||
|
|
||||||
|
# Define prompts.
|
||||||
|
PROMPT='
|
||||||
|
%F{cyan}${_prompt_my_pwd}%f${git_info:+${(e)git_info[prompt]}}%(!. %B%F{red}#%f%b.)${editor_info[keymap]} '
|
||||||
|
RPROMPT='${editor_info[overwrite]}%(?:: %F{red}⏎%f)${VIM:+" %B%F{green}V%f%b"}${git_info[rprompt]}'
|
||||||
|
# SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? '
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_my_setup "$@"
|
7
zshenv
7
zshenv
|
@ -1,5 +1,4 @@
|
||||||
source ~/.zsh/paths
|
# Ensure that a non-login, non-interactive shell has a defined environment.
|
||||||
if [ -z ${ZSH_INIT+x} ]; then
|
if [[ "$SHLVL" -eq 1 && ! -o LOGIN && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then
|
||||||
source ~/.zsh/functions
|
source "${ZDOTDIR:-$HOME}/.zprofile"
|
||||||
source ~/.zsh/aliases
|
|
||||||
fi
|
fi
|
||||||
|
|
31
zshrc
31
zshrc
|
@ -1,33 +1,16 @@
|
||||||
#!/bin/zsh
|
#!/bin/zsh
|
||||||
|
|
||||||
# ZSH Env variables
|
# Source Prezto.
|
||||||
export ZSH_INIT=1
|
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
|
||||||
export ZSH=$HOME/.oh-my-zsh
|
source ~/.zsh/preztorc
|
||||||
|
source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
|
||||||
source ~/.zsh/functions
|
|
||||||
|
|
||||||
# Plugins:
|
|
||||||
# see <https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins>
|
|
||||||
plugins=(git)
|
|
||||||
if is_mac; then
|
|
||||||
plugins+=tmux
|
|
||||||
plugins+=vagrant
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Liiiiive!
|
|
||||||
source $ZSH/oh-my-zsh.sh
|
|
||||||
|
|
||||||
# Source component rcfiles
|
# Source component rcfiles
|
||||||
source ~/.zsh/paths
|
source ~/.zsh/functions
|
||||||
source ~/.zsh/aliases
|
source ~/.zsh/aliases
|
||||||
source ~/.zsh/config
|
source ~/.zsh/config
|
||||||
source ~/.zsh/completion
|
|
||||||
source ~/.zsh/prompt
|
|
||||||
# source ~/.zsh/welcome
|
|
||||||
|
|
||||||
# Have a system specific rcfile? Source it!
|
|
||||||
[ -f ~/.localrc ] && source ~/.localrc
|
|
||||||
|
|
||||||
# Init rbenv & pyenv
|
# Init rbenv & pyenv
|
||||||
command_exists rbenv && eval "$(rbenv init -)"
|
command_exists "rbenv" && eval "$(rbenv init -)"
|
||||||
command_exists pyenv && eval "$(pyenv init -)"
|
command_exists "pyenv" && eval "$(pyenv init -)"
|
||||||
|
|
Loading…
Reference in a new issue