My personal configuration files for macOS. Includes setup for zsh, vim, tmux, git, VS Code, Karabiner-Elements, and code formatting tools.
| File/Folder | What It Configures |
|---|---|
zshrc |
Zsh shell — aliases, key bindings, prompt theme, history, fnm auto-switching |
vimrc |
Vim — plugins (via vim-plug), key mappings, linting (ALE), theme (seoul256) |
tmux.conf |
Tmux — prefix key (Ctrl+Space), pane/window bindings, status bar |
gitconfig |
Git — aliases (st, co, br, rpull), credential helper, editor |
gitignore |
Global git ignores — swap files, .DS_Store, vim sessions |
karabiner.json |
Karabiner-Elements — Caps Lock acts as Ctrl (Escape if tapped alone) |
eslintrc.json |
ESLint — JS/React linting with Prettier integration |
prettierrc |
Prettier — formatting rules (80 chars, 2-space tabs, trailing commas) |
vscode/settings.json |
VS Code — format on save, Prettier as default formatter |
packages/homebrew |
List of Homebrew packages to install |
packages/npm |
List of global npm packages to install |
bin/ |
Custom scripts (e.g. tmux window status formatter) |
zsh/ |
Zsh plugins — oh-my-zsh completions/git/themes, zsh-syntax-highlighting |
agignore |
Silver Searcher ignore rules |
install.sh |
Automated setup script — symlinks, packages, vim-plug |
git clone https://github.com/mfreyre/marf_dotfiles.git ~/marf_dotfiles
cd ~/marf_dotfiles
./install.shThe install script will:
- Symlink all config files to their expected locations
- Install Homebrew packages (fzf, ripgrep, fnm, tmux, vim, etc.)
- Install global npm packages
- Install vim-plug (run
:PlugInstallin Vim afterward) - Optionally set up Karabiner-Elements and VS Code configs if installed
If you prefer to set things up individually:
# Shell & git
ln -sf ~/marf_dotfiles/zshrc ~/.zshrc
ln -sf ~/marf_dotfiles/gitconfig ~/.gitconfig
ln -sf ~/marf_dotfiles/gitignore ~/.gitignore
# Vim
ln -sf ~/marf_dotfiles/vimrc ~/.vimrc
# Tmux
ln -sf ~/marf_dotfiles/tmux.conf ~/.tmux.conf
# Code formatting
ln -sf ~/marf_dotfiles/eslintrc.json ~/.eslintrc.json
ln -sf ~/marf_dotfiles/prettierrc ~/.prettierrc
ln -sf ~/marf_dotfiles/agignore ~/.agignore
# Custom scripts
mkdir -p ~/.bin
ln -sf ~/marf_dotfiles/bin/format-tmux-window-status ~/.bin/format-tmux-window-statusmkdir -p ~/.zsh/oh-my-zsh ~/.zsh/zsh-syntax-highlighting
ln -sf ~/marf_dotfiles/zsh/oh-my-zsh/completion.zsh ~/.zsh/oh-my-zsh/completion.zsh
ln -sf ~/marf_dotfiles/zsh/oh-my-zsh/git.zsh ~/.zsh/oh-my-zsh/git.zsh
ln -sf ~/marf_dotfiles/zsh/oh-my-zsh/themes-and-appearance.zsh ~/.zsh/oh-my-zsh/themes-and-appearance.zsh
ln -sf ~/marf_dotfiles/zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zshxargs brew install < ~/marf_dotfiles/packages/homebrew
xargs npm install -g < ~/marf_dotfiles/packages/npmcurl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vimThen open Vim and run :PlugInstall.
Install Karabiner-Elements, then:
mkdir -p ~/.config/karabiner
ln -sf ~/marf_dotfiles/karabiner.json ~/.config/karabiner/karabiner.jsonTo enable pane-aware text selection in tmux, go to Preferences → Profiles → Terminal and check "Enable mouse reporting". This lets tmux handle selections within individual panes. Hold Option while clicking to bypass tmux and select across the full terminal width.
ln -sf ~/marf_dotfiles/vscode/settings.json ~/Library/Application\ Support/Code/User/settings.json- Vi mode enabled (
bindkey -v) Ctrl+F/Ctrl+B— forward/backward wordCtrl+A/Ctrl+E— beginning/end of line
- Leader key:
Space Space+d— fuzzy find git files (fzf)Space+l— fuzzy find linesSpace+x— toggle commentSpace+a— toggle ALE lintingCtrl+J/Ctrl+K— previous/next buffer
- Prefix:
Ctrl+Space Prefix+|— vertical splitPrefix+-— horizontal splitPrefix+h/j/k/l— navigate panesPrefix+H/J/K/L— resize panes
MIT