Your dotfiles are how you personalize your system. These are mine.
This contains my own configurations for git, vim, tmux, zsh using oh-my-zsh, ruby, pry, and more. The provided installer includes support for the following OS/distributions:
- Mac OSX
- Fedora
- Red Hat Enterprise Linux
- CentOS
There is an install script to automatically symlink all the configuration files to your home directory and install packages for supported operating systems.
$ git clone --recursive [email protected]:chrisarcand/dotfiles.git ~/.dotfiles
$ ~/.dotfiles/install.sh
Note: Although the install script is quite good and will back up your own existing dotfiles with nice prompts, I take no responsibility for your system. Please be sure to back up your files appropriately before installation if there's anything important that already exists.
You'll need to set up things like your default shell and fonts n' stuff in your terminal emulator yourself, after this installation.
These files follow a topic-based organizational scheme originally popularized by Zach Holman. The organization is as follows:
-
bin/
Anything in bin/ will get added to your $PATH and be made available everywhere. -
<topic>/*.zsh
Any files ending in .zsh get loaded into your environment. -
<topic>/path.zsh
Any file named path.zsh is loaded first and is expected to setup $PATH or similar. -
<topic>/completion.zsh
Any file named completion.zsh is loaded last and is expected to set up autocomplete. -
<topic>/*.symlink
Any files ending in.symlink
get symlinked into your $HOME when you use the provided install script. This is so you can keep all of those versioned in your dotfiles but still keep those autoloaded files in your home directory. -
_plugins/
This directory houses git submodules to properly version important external dependencies. I don't do this for all plugins (Like, vim plugins are always freshly installed), but make an exception for some things like oh-my-zsh and tmux plugins.
Many of the basic bindings are from Maximum Awesome, the set of dotfiles I originally started using with vim. I change these pretty often, but here's a short sampling of the standard flow:
,
is the Vim leader key,d
brings up NERDTree, a sidebar buffer for navigating and manipulating files,f
finds current file in NERDTree sidebar,t
brings up ctrlp.vim, a project file filter for easily opening specific files,b
restricts ctrlp.vim to open buffers,a
starts project search with ack.vim using ag (like ack)ds
/cs
delete/change surrounding characters (e.g."Hey!"
+ds"
=Hey!
,"Hey!"
+cs"'
='Hey!'
) with vim-surround\\\
toggles current line comment\\
toggles visual selection comment linesvii
/vai
visually selects in or around the cursor's indent,[space]
cancels highlight (:nohl)<C-]>
jumps to definition of method/class/variable/module using ctags<C-t>
goes back to where you jumped from (ctags),l
begins aligning lines on a string, usually used as,l=
to align assignments<C-hjkl>
move between windows, shorthand for<C-w> hjkl
,rs
runs current RSpec example,,rt
runs full RSpec file,,rl
runs last RSpec example...all within vim-dispatchK
greps project for current word under cursor- And loads more...
<C-a>
is the prefix- mouse scroll initiates tmux scroll
prefix v
makes a vertical splitprefix s
makes a horizontal split
If you have three or more panes:
prefix +
opens up the main-horizontal-layoutprefix =
opens up the main-vertical-layout
You can adjust the size of the smaller panes in tmux.conf
by lowering or increasing the other-pane-height
and other-pane-width
options.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request