Personal Vim 9+ configuration. Uses Vim's native package system (pack/plugins/start/) with git submodules to manage plugins.
- Vim 9.0+
- git
- Homebrew
All other dependencies (fzf, ripgrep, LSP servers, linters, fixers) are installed automatically by make install and kept up to date by make update.
Clone the repo, then run:
make installThis will:
- Install dependencies via Homebrew, npm, and pipx (fzf, ripgrep, LSP servers, linters, fixers)
- Back up any existing
~/.vimto~/.vim.bak - Initialise all plugin submodules
- Symlink the repo to
~/.vim
Vim 9 automatically reads ~/.vim/vimrc, so no .vimrc symlink is needed.
make updateThis will:
- Install/update all dependencies
- Pull the latest version of every plugin via
git submodule update --remote --merge
Dependencies are managed in the Makefile and installed automatically. You can also run make deps on its own.
| Package | Manager | Purpose |
|---|---|---|
| fzf | brew | Fuzzy finder |
| ripgrep | brew | Fast file search |
| pipx | brew | Python CLI tool installer |
| shellcheck | brew | Bash/sh static analysis |
| ruff | brew | Python linter and formatter |
| typescript | npm | TypeScript compiler |
| typescript-language-server | npm | TypeScript/JavaScript LSP server |
| bash-language-server | npm | Bash LSP server |
| prettier | npm | Code formatter (JS/TS/CSS/JSON/HTML/Markdown) |
| eslint | npm | JavaScript/TypeScript linter |
| python-lsp-server | pipx | Python LSP server |
LSP servers and linters that aren't installed are silently skipped by Vim.
# 1. Add the submodule
git submodule add https://github.com/AUTHOR/PLUGIN.git pack/plugins/start/PLUGIN
# 2. Generate help tags
vim -u NONE -c "helptags pack/plugins/start/PLUGIN/doc" -c q
# 3. Add any config to vimrc, then commit
git add .gitmodules pack/plugins/start/PLUGIN
git commit -m "Add PLUGIN"The plugin will be auto-loaded on next Vim start.
# 1. De-register and remove the submodule
git submodule deinit pack/plugins/start/PLUGIN
git rm pack/plugins/start/PLUGIN
# 2. Clean up the cached submodule data
rm -rf .git/modules/pack/plugins/start/PLUGIN
# 3. Remove any related config from vimrc, then commit
git commit -m "Remove PLUGIN"| Plugin | Description |
|---|---|
| fzf + fzf.vim | Fuzzy file/buffer/grep finder |
| vim-fugitive | Git integration |
| vim-gitgutter | Git diff signs in the gutter |
| vim-airline + themes | Status line |
| vim-commentary | Toggle comments with gcc |
| vim-surround | Manipulate surrounding quotes/brackets |
| vim-repeat | . repeat for plugin actions |
| nerdtree | File tree explorer |
| undotree | Visual undo history |
| tabular | Text alignment |
| lsp | Language Server Protocol support |
| ale | Asynchronous linting and fixing |
| gruvbox | Colour scheme |
| vim-sleuth | Auto-detect indentation settings |
| vim-unimpaired | Handy [ and ] mappings |
| vim-test | Run tests from Vim |