Requires
Homebrewto be installed
Runs neovim-installer.sh script to install neovim with MomePP's configuration.
./neovim-installer.shMost of the keybindings can be modified in keymaps.lua.
All the installed plugins are listed in plugins/init.lua or plugins/
The login shell. Uses the zsh macOS ships (/bin/zsh, 5.9) — Homebrew's is
5.9.2, a patch bump with nothing user-visible, and the system one is already
listed in /etc/shells so it needs no sudo and cannot leave the account
shell-less if a brew upgrade fails part-way.
chsh -s /bin/zshconfig-installer.sh symlinks both rc files, which zsh only reads from $HOME:
| File | Holds |
|---|---|
zsh/.zprofile |
brew shellenv, PATH, exported env — runs once per login shell |
zsh/.zshrc |
completions, prompt, vi mode, keybinds, aliases, functions |
Tool init lives in .zshrc: starship, carapace (after compinit, which it
needs for compdef), fnm --use-on-cd, pyenv init -, and bun completions.
Most CLI completions come free — brew shellenv puts
/opt/homebrew/share/zsh/site-functions on FPATH and compinit picks them
all up; carapace covers what brew does not ship (lazygit, tmux, cargo).
Inline hints and syntax highlighting are the two things zsh does not have built
in. config-installer.sh installs them; .zshrc sources both behind an
existence check, so a machine without them still gets a working shell.
brew install zsh-autosuggestions zsh-syntax-highlightingThe
brewfunction in.zshrcis not a convenience — it re-runsclaude-relinkafter every invocation. macOS TCC grants app-data access by absolute path and the claude-code cask installs to a version-stamped dir, so without it everybrew upgradere-triggers "Data Access Blocked".
Requires fish and fisher(packages manager)
brew install fish # install fish shell
chsh -s /bin/fish # set default shell to fishcurl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher # install fisher
fisher update # install all listed plugins in `fish_plugins`Requires tmux and tmp(tmux plugins manager)
Already configured with following keybindings
- Session - follow by uppercase-letter
- Window - follow by Ctrl-key to hold
- Pane - follow by lowercase-letter
| Actions | Session | Window | Pane |
|---|---|---|---|
| new | <prefix>N |
<prefix><C-n> |
<prefix>n |
| next | <prefix>J or <prefix>O |
<prefix><C-j> or <prefix><C-o> |
<prefix>j or <prefix>o |
| previous | <prefix>K |
<prefix><C-k> |
<prefix>k |
| kill | <prefix>X |
<prefix><C-x> |
<prefix>x |
the correct way to set up tmux terminfo on macOS, we need to compile the description by using infocmp from latest ncurses → Ref. Notes
If you are using kitty terminal, needed to set terminfo to
xterm-kitty. otherwise, the undercurl is not usable.
# install latest ncurses
brew install ncurses
# export tmux terminfo
/opt/homebrew/Cellar/ncurses/<version>/bin/infocmp tmux-256color > ~/tmux-256color.info
# compiling terminfo description to system database
sudo tic -xe tmux-256color ~/tmux-256color.infoupdate service plist file to runs skhd using /bin/bash
~/Library/LaunchAgents/com.koekeishiya.skhd.plist
- Add
SHELLkey to env dict<key>SHELL</key> <string>/bin/bash</string>