Set zsh as your login shell:
chsh -s $(which zsh)
Clone onto your laptop:
git clone git://github.com/rocLv/dotfiles.git ~/dotfiles
You could either link to dotfiles or copy to your home directory. Do not forget to add '.' before filenames.
Put your customizations in dotfiles appended with .local
:
~/.aliases.local
~/.git_template.local/*
~/.gitconfig.local
~/.gvimrc.local
~/.psqlrc.local
(we supply a blank.psqlrc.local
to preventpsql
from throwing an error, but you should overwrite the file with your own copy)~/.tmux.conf.local
~/.vimrc.local
~/.vimrc.bundles.local
~/.zshrc.local
~/.zsh/configs/*
For example, your ~/.aliases.local
might look like this:
# Productivity
alias todo='$EDITOR ~/.todo'
Your ~/.gitconfig.local
might look like this:
[alias]
l = log --pretty=colored
[pretty]
colored = format:%Cred%h%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset
[user]
name = Dan Croak
email = dan@thoughtbot.com
Your ~/.vimrc.local
might look like this:
" Color scheme
colorscheme github
highlight NonText guibg=#060606
highlight Folded guibg=#0A0A0A guifg=#9090D0
To extend your git
hooks, create executable scripts in
~/.git_template.local/hooks/*
files.
Your ~/.zshrc.local
might look like this:
# load pyenv if available
if which pyenv &>/dev/null ; then
eval "$(pyenv init -)"
fi
Your ~/.vimrc.bundles.local
might look like this:
Plug 'Lokaltog/vim-powerline'
Plug 'stephenmckinney/vim-solarized-powerline'
Additional zsh configuration can go under the ~/.zsh/configs
directory. This
has two special subdirectories: pre
for files that must be loaded first, and
post
for files that must be loaded last.
For example, ~/.zsh/configs/pre/virtualenv
makes use of various shell
features which may be affected by your settings, so load it first:
# Load the virtualenv wrapper
. /usr/local/bin/virtualenvwrapper.sh
Setting a key binding can happen in ~/.zsh/configs/keys
:
# Grep anywhere with ^G
bindkey -s '^G' ' | grep '
Some changes, like chpwd
, must happen in ~/.zsh/configs/post/chpwd
:
# Show the entries in a directory whenever you cd in
function chpwd {
ls
}
This directory is handy for combining dotfiles from multiple teams; one team
can add the virtualenv
file, another keys
, and a third chpwd
.
The ~/.zshrc.local
is loaded after ~/.zsh/configs
.
Similarly to the zsh configuration directory as described above, vim
automatically loads all files in the ~/.vim/plugin
directory. This does not
have the same pre
or post
subdirectory support that our zshrc
has.
This is an example ~/.vim/plugin/c.vim
. It is loaded every time vim starts,
regardless of the file name:
# Indent C programs according to BSD style(9)
set cinoptions=:0,t0,+4,(4
autocmd BufNewFile,BufRead *.[ch] setlocal sw=0 ts=8 noet
vim configuration:
- Ctrl-P for fuzzy file/buffer/tag finding.
- Rails.vim for enhanced navigation of
Rails file structure via
gf
and:A
(alternate),:Rextract
partials,:Rinvert
migrations, etc. - Run many kinds of tests from vim
- Set
<leader>
to a single space. - Switch between the last two files with space-space.
- Syntax highlighting for CoffeeScript, Textile, Cucumber, Haml, Markdown, and HTML.
- Use Ag instead of Grep when available.
- Map
<leader>ct
to re-index Exuberant Ctags. - Use vim-mkdir for automatically creating non-existing directories before writing the buffer.
- Use vim-plug to manage plugins.
tmux configuration:
- Improve color resolution.
- Remove administrative debris (session name, hostname, time) in status bar.
- Set prefix to
Ctrl+s
- Soften status bar color from harsh green to light gray.
git configuration:
- Adds a
create-branch
alias to create feature branches. - Adds a
delete-branch
alias to delete feature branches. - Adds a
merge-branch
alias to merge feature branches into master. - Adds an
up
alias to fetch and rebaseorigin/master
into the feature branch. Usegit up -i
for interactive rebases. - Adds
post-{checkout,commit,merge}
hooks to re-index your ctags. - Adds
pre-commit
andprepare-commit-msg
stubs that delegate to your local config.
Ruby configuration:
- Add trusted binstubs to the
PATH
. - Load rbenv into the shell, adding shims onto our
PATH
.
Shell aliases and scripts:
b
forbundle
.g
with no arguments isgit status
and with arguments acts likegit
.git-churn
to show churn for the files changed in the branch.migrate
forrake db:migrate && rake db:rollback && rake db:migrate
.mcd
to make a directory and change into it.replace foo bar **/*.rb
to find and replace within a given list of files.tat
to attach to tmux session named the same as the current directory.v
for$VISUAL
.
Thank thougtbot.
dotfiles is copyright © 2009-2016 thoughtbot. It is free software, and may be
redistributed under the terms specified in the LICENSE
file.