These are the dotfiles I use on a regular basis on development machines. They get slowly tweaked over time to fit my needs as I work with new software or on new types of hosts. They get used on MacOS and Linux mostly - I can't speak for how they work on Windows, but in my limited Windows Subsystem for Linux testing, I've noticed strange behavior with vim colorschemes.
Custom shell aliases for everyday use:
gg— Pretty-printedgit logwith graph, all branches, and decoration in a single oneline format.ls— Overrides the defaultlsto always follow symbolic links (ls -L).
A full-featured Vim configuration covering editor behavior, plugin management, and visual customization:
- Line numbers, syntax highlighting, and filetype-based indentation enabled.
- Dark background with the Gruvbox colorscheme.
jjmapped to<Esc>in insert mode for faster mode switching.- Cursor line highlighting, mouse support, and fast terminal rendering (
ttyfast). - Search highlighting with double-
Escto clear.
<F9>toggles between hard tabs (width 8) and soft tabs (width 4).- Soft tabs are the default (set on
VimEnter). - Mixed indentation is highlighted in red to catch formatting issues.
<F7>— Reformat the entire file.w!!— Save a file withsudowhen you forgot to open Vim as root.ReadWritecommand — Remount the filesystem as read-write (useful on read-only embedded systems).
Vundle is auto-installed on first launch if Git is available. The following plugins are configured:
| Plugin | Purpose |
|---|---|
| Vundle.vim | Plugin manager (manages itself) |
| vim-gitgutter | Show git diff markers in the sign column |
| vim-fugitive | Git integration within Vim |
| NERDTree | File system explorer sidebar |
| gruvbox | Retro color scheme |
| vim-airline | Enhanced status/tabline with Powerline fonts |
Conditional plugins (loaded only on multi-core machines):
| Plugin | Purpose |
|---|---|
| vim-minimap | Sublime-style code minimap |
| ctrlp.vim | Fuzzy file finder |
| vim-ros | ROS (Robot Operating System) support (requires Python 2 and catkin) |
The config detects the number of CPU cores at startup and adapts accordingly:
- On single-core machines: lazy redraw is enabled, airline caching is turned on, and heavier plugins (minimap, ctrlp) are skipped.
- On multi-core machines: NERDTree and Minimap open automatically on startup (except in
vimdiffmode).
- Trailing whitespace is highlighted in red.
- vim-airline tabline is enabled with buffer numbers shown and hard/soft tab mode displayed in the status bar.
- A workaround for a Vim memory leak (versions 702+) clears match highlights when leaving a buffer.
Contains a single wildcard (*) entry. Because the dotfiles are installed by cloning directly into ~, this prevents Git from tracking every file in the home directory — only explicitly added files are version-controlled.
WARNING: This method may overwrite any pre-existing dotfiles in your home directory that conflict with ones in this repository. Make sure you back them up or rename them (e.g., append .bak) before proceeding.
cd ~
git init
git remote add origin https://github.com/sfowlr/dotfiles.git
git pull origin masterThis clones the dotfiles directly into your home directory — no symlinks or install scripts needed.
-
Open Vim. On first launch, Vundle will automatically install itself and all configured plugins.
-
Source the aliases in your shell profile by adding the following to your
.bashrcor.bash_profile:if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
- Git — required for installation and for Vundle plugin management.
- Vim — the
.vimrctargets Vim (not Neovim), though most settings are compatible. - Powerline fonts (optional) — needed for proper vim-airline glyph rendering. Install from powerline/fonts.
- macOS / Linux: Fully supported.
- Windows (WSL): Works with caveats — some Vim colorschemes may render incorrectly.