Neovim to Emacs

My journey

Author

Rakesh V

Published

November 23, 2023

The great migration - Neovim to Emacs

In Progress

Please note this configuration is in progress.

Complete Package Comparison Table

Category/Plugin Best (Recommended) Alternative 2 Alternative 3 Notes Exploration
Package Manager Elpaca straight.el package.el (built-in) Elpaca: async, parallel installs, interactive UI. straight.el: reproducible builds. package.el: simple but limited. Setup completed. Will be moving to literal configuration
LazyGit Magit Diff-hl + VC Forge (for GitHub/GitLab) Magit is the gold standard - many switch to Emacs just for it. Forge adds PR/issue management.
LSP Eglot (built-in Emacs 29+) lsp-mode lsp-bridge Eglot is minimal, fast, built-in. Works out-of-box for shell, Rust, Python. Just enable with eglot-ensure.
Debugger Dape dap-mode Built-in GUD Dape is newer, lighter, simpler than dap-mode. Both support DAP protocol. Built-in GUD for basic debugging.
Quarto quarto-mode (with polymode) markdown-mode + org-mode poly-markdown Official quarto-mode package. Requires polymode, markdown-mode. Supports preview via quarto-preview.
Toggle Term (tmux-like) vterm eat (Emulate A Terminal) eshell + multi-term Vterm is fastest, most complete terminal. Eat is pure elisp (no compilation). Eshell is built-in.
Autopairs electric-pair-mode (built-in) smartparens elec-pair + paren electric-pair-mode is built-in Emacs, works out-of-box. Smartparens for more features.
Code Runner (Python/Jupyter) python-mode + ob-python (org-babel) python-pytest + quickrun jupyter-mode (emacs-jupyter) Use org-babel for literate programming. quickrun for quick execution. jupyter-mode for notebooks. Rust: cargo-mode or quickrun.
Music Player EMMS (Emacs Multimedia System) Bongo Listen.el EMMS is mature, feature-rich (mpv/vlc backend). Bongo is simpler. Listen.el is newest/simplest.
Project Management project.el (built-in) Projectile find-file-in-project project.el is built-in (Emacs 28+), fast. Projectile more features. Works with Vertico/Consult.
Telescope Vertico + Consult + Marginalia + Orderless Ivy + Counsel + Swiper Helm Vertico stack is modern, fast, modular. Native completion. Ivy/Helm are older but still popular.
Zen Mode writeroom-mode olivetti darkroom Writeroom-mode most popular. Olivetti focuses on centered text. All distraction-free.
Comments comment-dwim (built-in) evil-nerd-commenter comment-line comment-dwim is built-in (M-;). evil-nerd-commenter for more features.
Folders/Tree + Icons dired + all-the-icons-dired / nerd-icons-dired treemacs + all-the-icons neotree + all-the-icons Dired is built-in, powerful. Add icons with all-the-icons-dired. Treemacs for IDE-like tree.
Markdown Support markdown-mode gfm-mode (GitHub Flavored) poly-markdown markdown-mode is standard. gfm-mode for GitHub. poly-markdown for code blocks.
LaTeX Support AUCTeX Built-in latex-mode CDLaTeX (math) AUCTeX is the standard. Supports preview, compilation. CDLaTeX for fast math input.
Codeium AI codeium.el tabnine copilot.el Codeium.el is free, fast, supports 70+ languages. Works with company-mode or corfu.
iron.nvim (REPL) ob-python/ob-* (org-babel) python-mode REPL comint-mode Org-babel for literate programming. python-mode has built-in REPL. comint for general REPL.
Org-mode org-mode (built-in) org-agenda org-roam (Zettelkasten) Org-mode is THE reason many use Emacs. Built-in, powerful. org-roam for note-taking.

Power User Essentials (Missing from Neovim List)

Category Package Why Critical Priority
Keybinding Discovery which-key See available commands as you type HIGH
In-buffer Completion corfu + cape Faster than company, native completion HIGH
Navigation avy Jump anywhere instantly HIGH
Context Actions embark Power-user workflow enhancer HIGH
Spell Check jinx Modern, fast, language-aware MEDIUM
Note-taking denote or org-roam Zettelkasten for org-mode HIGH
Keybinding Config general.el Clean, organized keybindings MEDIUM
Help System helpful Better documentation viewer MEDIUM
History savehist + recentf Remember everything (built-in) HIGH
Search rg.el or deadgrep Fast project search with ripgrep HIGH