Emacs alternatives for pouplar Neovim plugins
I was a Neovim user for a long time, but I have switch to using Emacs for quite some time now. About 1.5 years. The transition for the most part was pretty smooth except for some initial hiccup. I am now in a state where I as productive or even more when compared to Neovim. So I thought I would write about my experience and what all plugins I have found here that helped me replicate my neovim setup.
You can find both my old neovim config and my new Emacs config at meain/dotfiles
Let me start of with things that I have found alternatives for.
Use | Neovim | Emacs | Note |
---|---|---|---|
Show indent lines | Yggdroot/indentLine | zk-phi/indent-guide | Allows you to conditionally render as well |
Show git changes in buffer | airblade/vim-gitgutter | dgutov/diff-hl | Emacs version is much more powerful |
Minimal writing env | junegunn/goyo.vim | joostkremers/writeroom-mode | |
Highlight only current section | junegunn/limelight.vim | larstvei/Focus | Emacs versino is more configurable |
Highlight hex or other color codes | rrethy/vim-hexokinase | rainbow-mode | |
Fuzzy matching on stuff | junegunn/fzf.vim | raxod502/selectrum + raxod502/prescient.el + minad/marginalia | Insanely more powerful in Emacs |
Markdown preview | suan/vim-instant-markdown | :custom | Didn't like any of the Emacs builtin ones |
Move text vertically/horizontally | zirrostig/vim-schlepp | mkhl/drag-stuff | Not as good as Neovim one for horizontal movement |
Run commands async | tpope/vim-dispatch | builtin - async-shell-command |
|
Auto set default dir for file | airblade/vim-rooter | :custom | |
Auto set tabstop/indent | tpope/vim-sleuth | jscheid/dtrt-indent | |
Git integration | tpope/vim-fugitive | magit/magit | Way more powerful |
File symbol tree | liuchengxu/vista.vim | bmag/imenu-list | |
Undo tree | mbbill/undotree | builtin - undo-tree |
|
File browser | justinmk/vim-dirvish | builtin - dired |
Way more powerful |
Tree browser | scrooloose/nerdtree | jaypei/emacs-neotree | Just used dired |
Surround vim objects with stuff | tpope/vim-surround | emacs-evil/evil-surround | |
Auto close brackets | tmsvg/pear-tree | builtin - electric-pair |
|
Commenting | tomtom/tcomment_vim | linktohack/evil-commentary | |
Linting/Checking | w0rp/ale | builtin - flymake |
|
LSP | builting - lsp |
eglot | |
tree-sitter | builtin - tree-sitter |
emacs-tree-sitter/elisp-tree-sitter | Neovim ecosystem is a bit better |
Doc in echo area | Shougo/echodoc.vim | builtin - eldoc |
|
Run tests | janko/vim-test | :custom | Neovim version is much better |
Git commit info | rhysd/git-messenger.vim | emacsorphanage/git-messenger | Neovim version is better |
Linting for non-code | davidbeckingsale/writegood.vim | bnbeckwith/writegood-mode | |
Autocomplete | nvim-lua/completion-nvim | company-mode/company-mode | Emacs version is a bit more configurable |
Jump to def with regex | pechorin/any-jump.vim | jacktasia/dumb-jump | |
Formatter | w0rp/ale | lassik/emacs-format-all-the-code |
Beyond this, I have ported most of my plugins and themes as well to Emacs. I just have not separated them out and published yet. It was a relatively easy process to port them thought. Elisp is really good language to work with.
Now to things that Neovim cannot do (as far as I know)
- dired-git-info Provides you with github like info in file browser thingy
- projectile Project based workflows
- forge Interactive with Github and other git hosting providers
- winner Retain/Undo-Redo window configs
- notmuch Email
- elfeed RSS
- tramp Rmote editing (not that reliable though)
- docker Docker interface from Emacs
- kubernetes Kubernetes interface from Emacs
None of this is to ask you to switch to Emacs or anything. It is more for people who are new to Emacs and are Vim converts trying to figure thing out.