Modern dotfiles configuration for macOS with vim, wezterm, ranger, and custom scripts.
This repository manages development environment configurations using GNU Stow for symlink management. Originally created in 2021, comprehensively modernized in 2026.
- Vim - Modern vim setup with 7 essential plugins (linter, file explorer, fuzzy finder, git integration)
- WezTerm - Terminal emulator configuration
- Ranger - Console file manager settings
- Scripts - Custom utility scripts (gum commit helper)
- Shell - ZSH configurations and environment variables
- macOS (Catalina or later)
- Homebrew installed
- Git
# Clone the repository
git clone <your-repo-url> ~/Dev/powerTools
cd ~/Dev/powerTools
# Run the installation script (idempotent - safe to run multiple times)
./install_dependencies.shThe script will:
- Update vim plugins (git submodules)
- Install Homebrew dependencies
- Install modern CLI tools (ripgrep, fd, bat, delta, fzf, eza)
- Create symlinks using stow
- Configure .zshrc and git settings
# Restart your terminal or source .zshrc
source ~/.zshrc
# Test vim (should start without errors)
vim
# Test ranger
ranger- ALE - Asynchronous Lint Engine (linter/fixer for multiple languages)
- NERDTree - File explorer (Ctrl+t to toggle)
- CtrlP - Fuzzy file finder (Ctrl+p)
- Lightline - Beautiful statusline
- MRU - Most Recently Used files (Enter to open)
- vim-argwrap - Wrap/unwrap function arguments (backtick+a)
- vim-gitgutter - Git diff in the gutter
- ripgrep (rg) - Faster grep
- fd - Better find
- bat - Cat with syntax highlighting
- delta - Beautiful git diffs
- fzf - Fuzzy finder
- eza - Modern ls replacement
- ranger - Console file manager
- pipx - Python tool installer
~/.vimrc- Vim configuration~/.wezterm.lua- WezTerm terminal config~/.config/ranger/- Ranger file manager config
Default leader key: backtick (`)
| Key | Action |
|---|---|
Ctrl+t |
Toggle NERDTree |
Ctrl+p |
Open CtrlP fuzzy finder |
Ctrl+n |
Open NERDTree |
Enter |
Open MRU (Most Recently Used files) |
`a |
Toggle ArgWrap (wrap/unwrap arguments) |
`ak |
ALE next error |
`aj |
ALE previous error |
- Line numbers enabled
- Smart case-insensitive search
- System clipboard integration (macOS)
- Mouse support
- Split windows open below
- 4-space tabs
- Syntax highlighting and filetype detection
cd ~/Dev/powerTools
git submodule update --remote --merge
git add -A
git commit -m "chore: update vim plugins"The installation script is idempotent - you can run it multiple times safely:
./install_dependencies.shIt will:
- Skip already-installed packages
- Not create duplicate .zshrc entries
- Safely restow configurations
powerTools/
├── install_dependencies.sh # Main installation script
├── .gitmodules # Git submodules (vim plugins)
├── vim/ # Vim configuration
│ ├── .vimrc # Main vim config
│ └── .vim/pack/vendor/start/ # Vim plugins (submodules)
├── wezterm/ # WezTerm configuration
│ └── .wezterm.lua
├── ranger/ # Ranger configuration
│ └── ranger/
│ └── rc.conf
└── scripts/ # Custom scripts
└── gum_commit.sh # Interactive commit helper
-
Add as git submodule:
cd ~/Dev/powerTools git submodule add <plugin-url> vim/.vim/pack/vendor/start/<plugin-name>
-
Update .gitmodules and commit
-
Plugin will load automatically on vim start
Edit ~/Dev/powerTools/vim/.vimrc then:
cd ~/Dev/powerTools
stow --restow -t ~ vimOr just edit ~/.vimrc directly (it's a symlink).
Add to your ~/.zshrc or create ~/.zsh_aliases:
# Add to .zshrc
echo 'alias ll="eza -la"' >> ~/.zshrc
source ~/.zshrc# Ensure submodules are initialized
cd ~/Dev/powerTools
git submodule update --init --recursiveIf stow reports conflicts (existing files):
# Backup existing files
mv ~/.vimrc ~/.vimrc.backup
# Re-run stow
stow --restow -t ~ vimThe script should prevent duplicates, but if they occur:
# Remove duplicates manually
vim ~/.zshrc
# Or use uniq (backup first!)
cp ~/.zshrc ~/.zshrc.backup
cat ~/.zshrc | awk '!seen[$0]++' > ~/.zshrc.tmp && mv ~/.zshrc.tmp ~/.zshrcCheck which plugin causes the issue:
# Start vim in verbose mode
vim -V9vim_debug.log
# Check the log
cat vim_debug.logcd ~/Dev/powerTools
# Unstow all packages
stow -D -t ~ vim
stow -D -t ~ wezterm
stow -D -t ~/.config ranger
# Remove installed tools (optional)
brew uninstall ripgrep fd bat delta fzf eza ranger pipx
# Remove .zshrc entries manually if desired
vim ~/.zshrcThis modernization includes:
- All vim plugins updated from 2021→2026 versions
- Removed all pyenv references
- Added modern CLI tools
- Made installation script idempotent
- Fixed critical bugs (vim runtimepath, duplicate .gitmodules)
- Added comprehensive documentation
Your existing configs are preserved. The installation script is safe to run over existing setups.
When ready to switch to Neovim:
- Keep this vim config as fallback
- Create separate
nvim/directory - Neovim will use
~/.config/nvim/(won't conflict) - Gradually migrate configs and test
This is a personal dotfiles repository. Feel free to fork and adapt to your needs.
MIT License - Feel free to use and modify
See CHANGELOG.md for version history.
Last Updated: 2026-04-02 Maintained by: @danwork