A comprehensive collection of configuration files for a modern developer environment. This repository contains configurations for terminal, shell, editor, and development tools.
This configuration setup is designed for macOS/Linux systems with a focus on minimal, fast, and remote-friendly tooling. Each configuration is self-contained and can be used independently.
- Git - Version control (required for Neovim plugins, git aliases, and various integrations)
- Neovim (0.9+) - Modern Vim editor with Lua configuration
- tmux - Terminal multiplexer
- Zsh - Shell (uses built-in features, no Oh My Zsh required)
- ripgrep (rg) - Fast text search (required for Neovim
:Rgcommand) - bat - Syntax-highlighted pager (required for zsh pager and cheatsheet viewing)
- fzf - Fuzzy finder (required for Neovim file navigation)
- Docker - Container platform (for docker aliases)
- kubectl - Kubernetes CLI (for k8s aliases)
- lsof - List open files (for
ports()andkillport()functions)
Font Requirements:
- JetBrains Mono font family must be installed
- Regular style
- Bold style
- Italic style
- Font size: 13.5pt with y-offset of 1
Color Scheme:
- Uses Tokyo Night color theme (dark background:
#1a1b26)
Key Features:
- Window padding: 14px horizontal, 12px vertical
- Opacity: 0.97
- Scrollback history: 10,000 lines
- Selection automatically copied to clipboard
- Beam cursor with blinking enabled
Installation:
- On macOS: Install JetBrains Mono via Homebrew (
brew install font-jetbrains-mono) or download from JetBrains - On Linux: Install via package manager or download from JetBrains website
Plugin Manager:
- lazy.nvim - Automatically bootstrapped on first run
Core Dependencies:
- fzf - Must be installed and built (
fzfbinary in PATH) - ripgrep - Required for
:Rgsearch command (rgbinary in PATH) - git - Required for git integration (gitsigns, fzf git commands)
LSP Servers (installed via Mason.nvim):
lua_ls- Lua Language Serverts_ls- TypeScript/JavaScript Language Serverpyright- Python Language Servergopls- Go Language Serverrust_analyzer- Rust Language Serverbashls- Bash Language Serveryamlls- YAML Language Serverjsonls- JSON Language Server
Treesitter Parsers (auto-installed):
- lua, vim, bash, json, yaml, javascript, typescript, html, css, python
Keybindings:
<Space>- Leader key<leader>e- Toggle file tree (nvim-tree)<leader>ff- Find files (fzf)<leader>fg- Find git files<leader>fb- Find buffers<leader>fw- Search with ripgrep<leader>f- Format code (LSP)gd- Go to definition (LSP)gr- Go to references (LSP)K- Hover documentation (LSP)<leader>rn- Rename symbol (LSP)<C-h/j/k/l>- Navigate windows (works with tmux via vim-tmux-navigator)
Plugins:
- nvim-tree.lua - File tree
- fzf.vim - Fuzzy finder
- nvim-treesitter - Syntax highlighting
- gitsigns.nvim - Git signs in gutter
- nvim-cmp + sources - Autocompletion
- nvim-lspconfig - LSP client
- mason.nvim - LSP server installer
- vim-tmux-navigator - Seamless tmux/neovim navigation
- bufdelete.nvim - Safe buffer deletion
- LuaSnip - Snippet engine (for LSP snippets)
Installation:
- Ensure Neovim 0.9+ is installed
- Install fzf:
brew install fzf(macOS) or via package manager - Install ripgrep:
brew install ripgrep(macOS) or via package manager - Link config:
ln -s ~/.config/nvim ~/.config/nvim(if needed) - Launch Neovim - plugins will auto-install via lazy.nvim
- LSP servers will be installed automatically via Mason when you open files
Terminal Requirements:
- tmux-256color terminal capability - Your terminal must support 256-color mode
- On macOS, this is typically enabled by default in modern terminals
- On Linux, you may need to ensure
TERM=tmux-256coloris set
Keybindings:
- Prefix:
Ctrl-a(changed from defaultCtrl-b) |- Split window vertically-- Split window horizontallyh/j/k/l- Navigate panes (vim-style)H/J/K/L- Resize panesr- Reload configq- Detach session
Features:
- Mouse support enabled
- History limit: 50,000 lines
- Vim-style copy mode
- Window/pane indexing starts at 1
- Status bar shows session name and hostname (when SSH'd)
Plugin Directories (Optional):
The plugins/ directory contains plugin folders, but no TPM configuration is present. These plugins are not automatically loaded unless TPM is configured separately:
- nord-tmux (theme)
- tmux-prefix-highlight
- tmux-sensible
- tmux-sessionx
- tmux-yank
- vim-tmux-navigator (also in Neovim)
Installation:
- Install tmux:
brew install tmux(macOS) or via package manager - Link config:
ln -s ~/.config/tmux/tmux.conf ~/.tmux.conf - Ensure your terminal supports 256-color mode
Dependencies:
- bat - Required for pager (
LESSOPEN) and cheatsheet commands - git - Required for git aliases and prompt integration
- Docker (optional) - For docker aliases
- kubectl (optional) - For k8s aliases
- lsof - Required for
ports()andkillport()functions (usually pre-installed on macOS)
Features:
- Built-in git prompt (uses zsh
vcs_info, no plugins needed) - 50,000 line history with sharing across sessions
- Case-insensitive globbing
- Autocompletion with menu selection
Aliases:
- Git aliases: sourced from
~/.config/git/aliases.sh - Docker aliases: sourced from
~/.config/docker/aliases.sh - Kubernetes aliases: sourced from
~/.config/k8s/aliases.sh - Cheatsheet commands:
git-commands,k8s-commands,docker-commands,tmux-commands,zsh-commands,nvim-commands
Functions:
mkcd <dir>- Create directory and cd into itcdr- Jump to git repository rootports- Show active listening portskillport <port>- Kill process on specified portdkclean- Docker system prunekctxp- Show current kubectl context
Auto-tmux:
- Automatically attaches/creates tmux session when SSH'ing into a server
macOS-specific:
- Disables press-and-hold character accent menu
Installation:
- Ensure zsh is your default shell (usually default on macOS)
- Install bat:
brew install bat(macOS) or via package manager - Link config:
ln -s ~/.config/zsh/.zshrc ~/.zshrc - Source it:
source ~/.zshrcor restart terminal
Configuration:
- User name:
codephil - User email:
philip@meiers.in
Aliases (git/aliases.sh):
Extensive git aliases for common operations:
- Status:
gs,gss - Logs:
gl,glg,gla - Branches:
gb,gbv,gbd - Checkout/Switch:
gco,gcob,gsw,gswc - Add/Commit:
ga,gaa,gc,gcm,gca,gcan - Fetch/Pull/Push:
gf,gfa,gp,gpo,gpm - Rebase:
grb,grbi,grbc,grba - Diff:
gd,gds - Stash:
gsh,gshp,gshl
Installation:
- Git aliases are automatically sourced by zsh config if
~/.config/git/aliases.shexists - Git config can be linked:
ln -s ~/.config/git/gitconfig ~/.gitconfig
Aliases (docker/aliases.sh):
- Base:
d,dc - Containers:
dps,dpa,dst - Images:
di - Logs/Exec:
dl,dlf,dex - Build/Run:
db,dr,drm,drmi - Compose:
dcu,dcud,dcd,dcb,dcl,dclf - Cleanup:
dclean,dcleanf
Installation:
- Aliases are automatically sourced by zsh config if
~/.config/docker/aliases.shexists - Requires Docker to be installed
Aliases (k8s/aliases.sh):
- Base:
k - Get:
kgp,kgs,kgd,kgn,kgi,kgcm,kgsec - Describe:
kdp,kdd,kds - Logs:
kl,klf,klp - Exec:
kex,ksh,kbash - Apply/Delete:
ka,kdel - Context/Namespace:
kctx,kctxs,kns,knsa - Rollout:
kro,kru - Metrics:
ktp,ktn
Installation:
- Aliases are automatically sourced by zsh config if
~/.config/k8s/aliases.shexists - Requires kubectl to be installed
Configuration:
- Config file is encrypted with Ansible Vault
- Decrypt with:
ansible-vault decrypt ~/.config/ssh/config
Installation:
- Link config:
ln -s ~/.config/ssh/config ~/.ssh/config - Ensure proper permissions:
chmod 600 ~/.ssh/config
Git Aliases (powershell/git-aliases.ps1):
Basic git aliases for PowerShell:
gst,ga,gc,gp,gl,gco,gcb,gb,gd,glog
Installation:
- Source in PowerShell profile if using Windows
Markdown cheatsheets for:
- docker.md
- git.md
- k8s.md
- nvim.md
- tmux.md
- zsh.md
Viewing:
- Use aliases:
git-commands,k8s-commands,docker-commands,tmux-commands,zsh-commands,nvim-commands - These use
batfor syntax highlighting
# Install core dependencies via Homebrew
brew install neovim tmux fzf ripgrep bat git
# Install fonts
brew install font-jetbrains-mono
# Link configurations (example)
ln -s ~/.config/zsh/.zshrc ~/.zshrc
ln -s ~/.config/tmux/tmux.conf ~/.tmux.conf
ln -s ~/.config/git/gitconfig ~/.gitconfig
ln -s ~/.config/nvim ~/.config/nvim # if not already linked
ln -s ~/.config/alacritty ~/.config/alacritty # if using Alacritty
# Restart terminal or source zshrc
source ~/.zshrc# Install core dependencies (example for Debian/Ubuntu)
sudo apt install neovim tmux fzf ripgrep bat git zsh
# Install JetBrains Mono font
# Download from https://www.jetbrains.com/lp/mono/ or use package manager
# Link configurations (same as macOS)
# ...- The
vim-tmux-navigatorplugin enables seamless navigation between Neovim windows and tmux panes usingCtrl-h/j/k/l - Works automatically when both are configured
EDITORandVISUALenvironment variables are set tonvim- Git commits and other editor operations will use Neovim
batis used as the pager forless(viaLESSOPEN)- Cheatsheet commands use
batfor syntax highlighting
- Alacritty's color scheme works well with tmux's 256-color mode
- Both use similar color palettes for consistency
- This configuration does not use Oh My Zsh - it relies on built-in zsh features
- Neovim plugins are managed via
lazy.nvimand auto-install on first run - LSP servers are installed via
mason.nvimwhen needed - tmux plugins in the
plugins/directory are not automatically loaded (no TPM config) - SSH config is encrypted with Ansible Vault for security
- All aliases are modular and can be sourced independently