scatterd-dotfiles/README.md
Jefferson Queiroz Venerando 0ee272928f Update README to use vim-plug syntax
The examples were using the vundle syntax instead.
2015-05-12 11:19:11 -03:00

233 lines
7.1 KiB
Markdown

thoughtbot dotfiles
===================
Requirements
------------
Set zsh as your login shell:
chsh -s $(which zsh)
Install
-------
Clone onto your laptop:
git clone git://github.com/thoughtbot/dotfiles.git
(Or, [fork and keep your fork
updated](http://robots.thoughtbot.com/keeping-a-github-fork-updated)).
Install [rcm](https://github.com/thoughtbot/rcm):
brew tap thoughtbot/formulae
brew install rcm
Install the dotfiles:
env RCRC=$HOME/dotfiles/rcrc rcup
This command will create symlinks for config files in your home directory.
Setting the `RCRC` environment variable tells `rcup` to use standard
configuration options:
* Exclude the `README.md` and `LICENSE` files, which are part of
the `dotfiles` repository but do not need to be symlinked in.
* Give precedence to personal overrides which by default are placed in
`~/dotfiles-local`
You can safely run `rcup` multiple times to update:
rcup
Make your own customizations
----------------------------
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 prevent `psql` from
throwing an error, but you should overwrite the file with your own copy)
* `~/.tmux.conf.local`
* `~/.vimrc.local`
* `~/.vimrc.bundles.local`
* `~/.zshenv.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
Your `~/.zshenv.local` might look like this:
# load pyenv if available
if which pyenv &>/dev/null ; then
eval "$(pyenv init -)"
fi
To extend your `git` hooks, create executable scripts in
`~/.git_template.local/hooks/*` files.
Your `~/.zshrc.local` might look like this:
# recommended by brew doctor
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
Your `~/.vimrc.bundles.local` might look like this:
Plug 'Lokaltog/vim-powerline'
Plug 'stephenmckinney/vim-solarized-powerline'
zsh Configurations
------------------
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`.
vim Configurations
------------------
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
What's in it?
-------------
[vim](http://www.vim.org/) configuration:
* [Ctrl-P](https://github.com/kien/ctrlp.vim) for fuzzy file/buffer/tag finding.
* [Rails.vim](https://github.com/tpope/vim-rails) for enhanced navigation of
Rails file structure via `gf` and `:A` (alternate), `:Rextract` partials,
`:Rinvert` migrations, etc.
* Run [RSpec](https://www.relishapp.com/rspec) specs 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](https://github.com/ggreer/the_silver_searcher) instead of Grep when
available.
* Use [Exuberant Ctags](http://ctags.sourceforge.net/) for tab completion.
* Use [vim-mkdir](https://github.com/pbrisbin/vim-mkdir) for automatically
creating non-existing directories before writing the buffer.
* Use [vim-plug](https://github.com/junegunn/vim-plug) to manage plugins.
[tmux](http://robots.thoughtbot.com/a-tmux-crash-course)
configuration:
* Improve color resolution.
* Remove administrative debris (session name, hostname, time) in status bar.
* Set prefix to `Ctrl+a` (like GNU screen).
* Soften status bar color from harsh green to light gray.
[git](http://git-scm.com/) 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 rebase `origin/master` into the feature
branch. Use `git up -i` for interactive rebases.
* Adds `post-{checkout,commit,merge}` hooks to re-index your ctags.
* Adds `pre-commit` and `prepare-commit-msg` stubs that delegate to your local
config.
[Ruby](https://www.ruby-lang.org/en/) configuration:
* Add trusted binstubs to the `PATH`.
* Load rbenv into the shell, adding shims onto our `PATH`.
Shell aliases and scripts:
* `b` for `bundle`.
* `g` with no arguments is `git status` and with arguments acts like `git`.
* `git-churn` to show churn for the files changed in the branch.
* `m` for `rake db:migrate && rake db:rollback && rake db:migrate && rake db:test:prepare`.
* `mcd` to make a directory and change into it.
* `replace foo bar **/*.rb` to find and replace within a given list of files.
* `rk` for `rake`.
* `tat` to attach to tmux session named the same as the current directory.
* `v` for `$VISUAL`.
Thanks
------
Thank you, [contributors](https://github.com/thoughtbot/dotfiles/contributors)!
Also, thank you to Corey Haines, Gary Bernhardt, and others for sharing your
dotfiles and other shell scripts from which we derived inspiration for items
in this project.
License
-------
dotfiles is copyright © 2009-2015 thoughtbot. It is free software, and may be
redistributed under the terms specified in the [`LICENSE`] file.
[`LICENSE`]: /LICENSE
About thoughtbot
----------------
![thoughtbot](https://thoughtbot.com/logo.png)
dotfiles is maintained and funded by thoughtbot, inc.
The names and logos for thoughtbot are trademarks of thoughtbot, inc.
We love open source software!
See [our other projects][community].
We are [available for hire][hire].
[community]: https://thoughtbot.com/community?utm_source=github
[hire]: https://thoughtbot.com/hire-us?utm_source=github