Skip to content

NeoVim migration#74

Draft
mattmenefee wants to merge 2 commits into
mainfrom
neovim
Draft

NeoVim migration#74
mattmenefee wants to merge 2 commits into
mainfrom
neovim

Conversation

@mattmenefee
Copy link
Copy Markdown
Owner

@mattmenefee mattmenefee commented May 17, 2026

Summary

Phased migration from MacVim + Vundle + Vimscript to Neovim with its native conventions and ecosystem. This draft PR will accumulate Phase 1 commits; later phases may be split into separate PRs.

The phases are designed so each one can land independently and leave a working editor:

  • Phase 1 (#67) — Minimum cutover from MacVim. Also closes #64.
  • Phase 2 (#68) — Remove Vim-only quirks
  • Phase 3 (#69) — Replace Vundle with lazy.nvim (foundational)
  • Phase 4 (#70) — Replace syntastic with LSP + nvim-lint
  • Phase 5 (#71) — File navigation and search
  • Phase 6 (#72) — Treesitter and completion
  • Phase 7 (#73) — Convert init.vim to init.lua

See `PLAN.md` for the full plan.

Test plan

Phase 1:

  • `nvim` opens with all 30+ plugins loaded from `~/.vim/bundle/`
  • `vim` alias resolves to `nvim`
  • Opening files inside the homesick castle produces no `.un~` symlinks
  • `init.zsh` bootstrap installs Vundle plugins via Neovim on a fresh machine
  • README accurately describes the current state

Document the phased migration from MacVim + Vundle + Vimscript to
Neovim with its native conventions and ecosystem.

The plan is split into 7 phases ordered by dependency so each phase
can land independently and leave a working editor:

1. Minimum cutover (also closes #64)
2. Remove Vim-only quirks
3. Replace Vundle with lazy.nvim (foundational for 4-7)
4. Replace syntastic with built-in LSP + nvim-lint
5. File navigation and search (telescope, oil/nvim-tree, ripgrep)
6. Treesitter and completion (nvim-cmp)
7. Convert init.vim to init.lua

Each phase is tracked in its own GitHub issue (#67-#73).
Phase 1 of the Neovim migration: stop launching MacVim, start launching
Neovim, with the smallest reasonable diff. Modernizing the plugin
manager, linter stack, search, and Lua conversion are deferred to
later phases (#68-#73).

The previous setup ran `mvim -v` against `~/.vimrc` with ~30 Vundle
plugins. Most carry over unchanged; the exceptions are called out
below.

Changes:

- Move `home/.vimrc` to `home/.config/nvim/init.vim` and prepend the
  Neovim → Vim runtimepath shim so Vundle continues finding
  `~/.vim/bundle/`.
- Drop the explicit `undodir` block — Neovim's default
  `~/.local/state/nvim/undo//` is already outside the homesick castle
  and auto-created (closes #64).
- Drop `set pastetoggle=<F2>` — option removed in Neovim 0.10
  (bracketed-paste handles this automatically).
- Drop `ervandew/supertab` plugin — incompatible with Neovim 0.12's
  Lua-callback default mappings; tab completion will be restored via
  nvim-cmp in Phase 6 (#72).
- Drop `flazz/vim-colorschemes` plugin — abandoned 6 years ago with
  no explicit Neovim support. Switch the active colorscheme from
  `railscasts` (a community port from that collection) to
  `new-railscasts` from the already-installed
  `carakan/new-railscasts-theme` plugin, which is actively maintained
  and has dedicated markdown / error-state styling. Enable
  `termguicolors` since the new colorscheme is gui-defined.
- Switch `vim` alias to `nvim` in `home/.zshrc`.
- Switch bootstrap to `nvim +PluginInstall +qall` in `init.zsh`.
- Remove `brew 'macvim'` from `Brewfile`.
- Update `README.md` to describe the transitional Neovim + Vundle
  state and link to `PLAN.md`.

Closes #64. Implements #67.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Clean up vim undodir workaround after NeoVim cutover

1 participant