start out with thoughtbots version

This commit is contained in:
Thomas Ruoff
2017-08-13 23:14:19 +02:00
parent e2663a5f4b
commit a638143b7f
24 changed files with 279 additions and 123 deletions

19
aliases Normal file
View File

@@ -0,0 +1,19 @@
# Unix
alias ll="ls -al"
alias ln="ln -v"
alias mkdir="mkdir -p"
alias e="$EDITOR"
alias v="$VISUAL"
# Bundler
alias b="bundle"
# Rails
alias migrate="rake db:migrate db:rollback && rake db:migrate db:test:prepare"
alias s="rspec"
# Pretty print the path
alias path='echo $PATH | tr -s ":" "\n"'
# Include custom aliases
[[ -f ~/.aliases.local ]] && source ~/.aliases.local

1
zplug

Submodule zplug deleted from ac6012d80d

View File

@@ -1,38 +0,0 @@
# extend path
export PATH="$HOME/local/bin:$PATH"
export EDITOR=$(which vim)
# nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
# rbenv
if [ -s "$HOME/.rbenv/bin/rbenv" ] ; then
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
fi
# in case there are local settings needed
if [ -s "$HOME/.zprofile.local" ] ; then
source $HOME/.zprofile.local
fi
# Dist related settings
case $OSTYPE in
"darwin14.0"|"darwin15.0" )
export PATH="$(brew --prefix coreutils)/libexec/gnubin:/usr/local/bin:$PATH"
export MANPATH="$(brew --prefix coreutils)/libexec/gnuman:$MANPATH"
#eval $(ssh-agent -s)
;;
"linux-gnu" )
export ANDROID_HOME=~/local/android-sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
;;
esac
case $HOSTNAME in
"cassiopeia.uberspace.de" )
export PATH=/package/host/localhost/nodejs-6/bin:$PATH
;;
esac

7
zsh/completion/_ag Normal file
View File

@@ -0,0 +1,7 @@
#compdef ag
if (( CURRENT == 2 )); then
compadd $(cut -f 1 tmp/tags .git/tags 2>/dev/null)
else;
_files
fi

72
zsh/completion/_bundler Normal file
View File

@@ -0,0 +1,72 @@
#compdef bundle
local curcontext="$curcontext" state line _gems _opts ret=1
_arguments -C -A "-v" -A "--version" \
'(- 1 *)'{-v,--version}'[display version information]' \
'1: :->cmds' \
'*:: :->args' && ret=0
case $state in
cmds)
_values "bundle command" \
"install[Install the gems specified by the Gemfile or Gemfile.lock]" \
"update[Update dependencies to their latest versions]" \
"package[Package the .gem files required by your application]" \
"exec[Execute a script in the context of the current bundle]" \
"config[Specify and read configuration options for bundler]" \
"check[Determine whether the requirements for your application are installed]" \
"list[Show all of the gems in the current bundle]" \
"show[Show the source location of a particular gem in the bundle]" \
"console[Start an IRB session in the context of the current bundle]" \
"open[Open an installed gem in the editor]" \
"lock[Generate a lockfile for your dependencies]" \
"viz[Generate a visual representation of your dependencies]" \
"init[Generate a simple Gemfile, placed in the current directory]" \
"gem[Create a simple gem, suitable for development with bundler]" \
"help[Describe available tasks or one specific task]" \
"platform[Displays platform compatibility information]" \
"outdated[Show all of the outdated gems in the current bundle]" \
"clean[Cleans up unused gems in your bundler directory]"
ret=0
;;
args)
case $line[1] in
help)
_values 'commands' 'install' 'update' 'package' 'exec' 'config' 'check' 'list' 'show' 'console' 'open' 'lock' 'viz' 'init' 'gem' 'help' 'platform' 'outdated' 'clean' && ret=0
;;
install)
_arguments \
'(--no-color)--no-color[disable colorization in output]' \
'(--local)--local[do not attempt to connect to rubygems.org]' \
'(--quiet)--quiet[only output warnings and errors]' \
'(--gemfile)--gemfile=-[use the specified gemfile instead of Gemfile]:gemfile' \
'(--system)--system[install to the system location]' \
'(--deployment)--deployment[install using defaults tuned for deployment environments]' \
'(--frozen)--frozen[do not allow the Gemfile.lock to be updated after this install]' \
'(--path)--path=-[specify a different path than the system default]:path:_files' \
'(--binstubs)--binstubs=-[generate bin stubs for bundled gems to ./bin]:directory:_files' \
'(--without)--without=-[exclude gems that are part of the specified named group]:groups'
ret=0
;;
exec)
_normal && ret=0
;;
(open|show)
_gems=( $(bundle show 2> /dev/null | sed -e '/^ \*/!d; s/^ \* \([^ ]*\) .*/\1/') )
if [[ $_gems != "" ]]; then
_values 'gems' $_gems && ret=0
fi
;;
*)
_opts=( $(bundle help $line[1] | sed -e '/^ \[-/!d; s/^ \[\(-[^=]*\)=.*/\1/') )
_opts+=( $(bundle help $line[1] | sed -e '/^ -/!d; s/^ \(-.\), \[\(-[^=]*\)=.*/\1 \2/') )
if [[ $_opts != "" ]]; then
_values 'options' $_opts && ret=0
fi
;;
esac
;;
esac
return ret

2
zsh/completion/_g Normal file
View File

@@ -0,0 +1,2 @@
#compdef g
compdef g=git

View File

@@ -0,0 +1,2 @@
#compdef production
compdef production=heroku

3
zsh/completion/_rspec Normal file
View File

@@ -0,0 +1,3 @@
#compdef rspec
compadd -P spec/ $(ls spec/**/*_spec.rb | sed -E "s/spec\///g")

2
zsh/completion/_staging Normal file
View File

@@ -0,0 +1,2 @@
#compdef staging
compdef staging=heroku

6
zsh/configs/color.zsh Normal file
View File

@@ -0,0 +1,6 @@
# makes color constants available
autoload -U colors
colors
# enable colored output from ls, etc. on FreeBSD-based systems
export CLICOLOR=1

2
zsh/configs/editor.zsh Normal file
View File

@@ -0,0 +1,2 @@
export VISUAL=vim
export EDITOR=$VISUAL

4
zsh/configs/history.zsh Normal file
View File

@@ -0,0 +1,4 @@
setopt hist_ignore_all_dups inc_append_history
HISTFILE=~/.zhistory
HISTSIZE=4096
SAVEHIST=4096

View File

@@ -0,0 +1,17 @@
# give us access to ^Q
stty -ixon
# vi mode
bindkey -v
bindkey "^F" vi-cmd-mode
# handy keybindings
bindkey "^A" beginning-of-line
bindkey "^E" end-of-line
bindkey "^K" kill-line
bindkey "^R" history-incremental-search-backward
bindkey "^P" history-search-backward
bindkey "^Y" accept-and-hold
bindkey "^N" insert-last-word
bindkey "^Q" push-line-or-edit
bindkey -s "^T" "^[Isudo ^[A" # "t" for "toughguy"

9
zsh/configs/options.zsh Normal file
View File

@@ -0,0 +1,9 @@
# awesome cd movements from zshkit
setopt autocd autopushd pushdminus pushdsilent pushdtohome cdablevars
DIRSTACKSIZE=5
# Enable extended globbing
setopt extendedglob
# Allow [ or ] whereever you want
unsetopt nomatch

View File

@@ -0,0 +1,6 @@
# load our own completion functions
fpath=(~/.zsh/completion /usr/local/share/zsh/site-functions $fpath)
# completion
autoload -U compinit
compinit

12
zsh/configs/post/path.zsh Normal file
View File

@@ -0,0 +1,12 @@
# ensure dotfiles bin directory is loaded first
PATH="$HOME/.bin:/usr/local/sbin:$PATH"
# load rbenv if available
if command -v rbenv >/dev/null; then
eval "$(rbenv init - --no-rehash)"
fi
# mkdir .git/safe in the root of repositories you trust
PATH=".git/safe/../../bin:$PATH"
export -U PATH

9
zsh/configs/prompt.zsh Normal file
View File

@@ -0,0 +1,9 @@
# modify the prompt to contain git branch name if applicable
git_prompt_info() {
current_branch=$(git current-branch 2> /dev/null)
if [[ -n $current_branch ]]; then
echo " %{$fg_bold[green]%}$current_branch%{$reset_color%}"
fi
}
setopt promptsubst
PS1='${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[blue]%}%c%{$reset_color%}$(git_prompt_info) %# '

View File

@@ -0,0 +1,4 @@
_git_delete_branch ()
{
__gitcomp "$(__git_heads)"
}

View File

@@ -0,0 +1,9 @@
# Change file extensions recursively in current directory
#
# change-extension erb haml
function change-extension() {
foreach f (**/*.$1)
mv $f $f:r.$2
end
}

10
zsh/functions/envup Normal file
View File

@@ -0,0 +1,10 @@
# Load .env file into shell session for environment variables
function envup() {
if [ -f .env ]; then
export $(cat .env)
else
echo 'No .env file found' 1>&2
return 1
fi
}

9
zsh/functions/g Normal file
View File

@@ -0,0 +1,9 @@
# No arguments: `git status`
# With arguments: acts like `git`
g() {
if [[ $# -gt 0 ]]; then
git "$@"
else
git status
fi
}

5
zsh/functions/mcd Normal file
View File

@@ -0,0 +1,5 @@
# Make directory and change into it.
function mcd() {
mkdir -p "$1" && cd "$1";
}

29
zshenv Normal file
View File

@@ -0,0 +1,29 @@
local _old_path="$PATH"
# Local config
[[ -f ~/.zshenv.local ]] && source ~/.zshenv.local
if [[ $PATH != $_old_path ]]; then
# `colors` isn't initialized yet, so define a few manually
typeset -AHg fg fg_bold
if [ -t 2 ]; then
fg[red]=$'\e[31m'
fg_bold[white]=$'\e[1;37m'
reset_color=$'\e[m'
else
fg[red]=""
fg_bold[white]=""
reset_color=""
fi
cat <<MSG >&2
${fg[red]}Warning:${reset_color} your \`~/.zshenv.local' configuration seems to edit PATH entries.
Please move that configuration to \`.zshrc.local' like so:
${fg_bold[white]}cat ~/.zshenv.local >> ~/.zshrc.local && rm ~/.zshenv.local${reset_color}
(called from ${(%):-%N:%i})
MSG
fi
unset _old_path

125
zshrc
View File

@@ -1,89 +1,46 @@
source ~/.dotfiles/zplug/init.zsh # load custom executable functions
for function in ~/.zsh/functions/*; do
source $function
done
# extra files in ~/.zsh/configs/pre , ~/.zsh/configs , and ~/.zsh/configs/post
# these are loaded first, second, and third, respectively.
_load_settings() {
_dir="$1"
if [ -d "$_dir" ]; then
if [ -d "$_dir/pre" ]; then
for config in "$_dir"/pre/**/*(N-.); do
. $config
done
fi
zplug "lib/spectrum", from:oh-my-zsh for config in "$_dir"/**/*(N-.); do
zplug "lib/directories", from:oh-my-zsh case "$config" in
zplug "lib/grep", from:oh-my-zsh "$_dir"/pre/*)
zplug "lib/history", from:oh-my-zsh :
zplug "lib/misc", from:oh-my-zsh ;;
zplug "plugins/common-aliases", from:oh-my-zsh "$_dir"/post/*)
zplug "plugins/frontend-search", from:oh-my-zsh :
;;
*)
if [ -f $config ]; then
. $config
fi
;;
esac
done
zplug "zsh-users/zsh-completions", use:"src/*.zsh" if [ -d "$_dir/post" ]; then
zplug "zsh-users/zsh-syntax-highlighting", defer:2 for config in "$_dir"/post/**/*(N-.); do
. $config
done
fi
fi
}
_load_settings "$HOME/.zsh/configs"
zplug "peterhurford/git-it-on.zsh" # Local config
zplug "gerges/oh-my-zsh-jira-plus" [[ -f ~/.zshrc.local ]] && source ~/.zshrc.local
zplug "mafredri/zsh-async" # aliases
zplug "sindresorhus/pure" [[ -f ~/.aliases ]] && source ~/.aliases
########################
# Other settings
########################
setopt auto_cd
setopt multios
setopt cdablevars
########################
# vi mode
########################
bindkey -v
zle -N edit-command-line
autoload -Uz edit-command-line
bindkey -M vicmd 'v' edit-command-line
########################
# Aliases
########################
alias _=sudo
alias g=git
alias nohist='unset HISTFILE'
alias reset='reset && base16_gruvbox-dark-medium'
alias ta='tmux attach -t'
alias ts='tmux new-session -s'
alias tl='tmux list-sessions'
rl () { $(npm bin)/$* }
# utt time tracking
alias ua='uttr --add'
alias uah='uttr --add hello'
alias uas='uttr --add standup'
alias ual='uttr --add "lunch**"'
alias ue='uttr --edit'
alias urw='uttr --report=week'
alias urlw='uttr --report=lastWeek'
alias urm='uttr --report=month'
alias urlm='uttr --report=lastMonth'
# colors
autoload -U colors && colors
alias ls='ls --color=tty'
# keybindings
export KEYTIMEOUT=1
# prevent 2*ESC-i insert-mode switch failure
noop () { }
zle -N noop
bindkey -M vicmd '\e' noop
bindkey '^P' up-history
bindkey '^N' down-history
bindkey '^r' history-incremental-search-backward
bindkey ' ' magic-space
# fzf
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
# zplug
if ! zplug check; then
zplug install
fi
zplug load