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

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 (https://github.com/meain/dotfiles)

Let me start of with things that I have found alternatives for.

Use Neovim Emacs Note

Show indent lines Yggdroot/indentLine (https://github.com/Yggdroot/indentLine) zk-phi/indent-guide (https://github.com/zk-phi/indent-guide) Allows you to conditionally render as well

Show git changes in buffer airblade/vim-gitgutter (https://github.com/airblade/vim-gitgutter) dgutov/diff-hl (https://github.com/dgutov/diff-hl) Emacs version is much more powerful

Minimal writing env junegunn/goyo.vim (https://github.com/junegunn/goyo.vim) joostkremers/writeroom-mode (https://github.com/joostkremers/writeroom-mode)

Highlight only current section junegunn/limelight.vim (https://github.com/junegunn/limelight.vim) larstvei/Focus (https://github.com/larstvei/Focus) Emacs versino is more configurable

Highlight hex or other color codes rrethy/vim-hexokinase (https://github.com/RRethy/vim-hexokinase) rainbow-mode (http://elpa.gnu.org/packages/rainbow-mode.html)

Fuzzy matching on stuff junegunn/fzf.vim (https://github.com/junegunn/fzf.vim) raxod502/selectrum (https://github.com/raxod502/selectrum) + raxod502/prescient.el (https://github.com/raxod502/prescient.el) + minad/marginalia (https://github.com/minad/marginalia) Insanely more powerful in Emacs

Markdown preview suan/vim-instant-markdown (https://githubhelp.com/azzsh/vim-instant-markdown) :custom (https://github.com/meain/dotfiles/blob/78ce688f2835f0527576ec20a9cb61c44225c267/emacs/.config/emacs/init.el#L2136-L2151) Didn’t like any of the Emacs builtin ones

Move text vertically/horizontally zirrostig/vim-schlepp (https://github.com/zirrostig/vim-schlepp) mkhl/drag-stuff (https://github.com/mkhl/drag-stuff) Not as good as Neovim one for horizontal movement

Run commands async tpope/vim-dispatch (https://github.com/tpope/vim-dispatch) builtin - async-shell-command

Auto set default dir for file airblade/vim-rooter (https://github.com/airblade/vim-rooter) :custom (https://github.com/meain/dotfiles/blob/78ce688f2835f0527576ec20a9cb61c44225c267/emacs/.config/emacs/init.el#L2737-L2746)

Auto set tabstop/indent tpope/vim-sleuth (https://github.com/tpope/vim-sleuth) jscheid/dtrt-indent (https://github.com/jscheid/dtrt-indent)

Git integration tpope/vim-fugitive (https://github.com/tpope/vim-fugitive) magit/magit (https://github.com/magit/magit) Way more powerful

File symbol tree liuchengxu/vista.vim (https://github.com/liuchengxu/vista.vim) bmag/imenu-list (https://github.com/bmag/imenu-list)

Undo tree mbbill/undotree (https://github.com/mbbill/undotree) builtin - undo-tree

File browser justinmk/vim-dirvish (https://github.com/justinmk/vim-dirvish) builtin - dired Way more powerful

Tree browser scrooloose/nerdtree (https://github.com/scrooloose/nerdtree) jaypei/emacs-neotree (https://github.com/jaypei/emacs-neotree) Just used dired

Surround vim objects with stuff tpope/vim-surround (https://github.com/tpope/vim-surround) emacs-evil/evil-surround (https://github.com/emacs-evil/evil-surround)

Auto close brackets tmsvg/pear-tree (https://github.com/tmsvg/pear-tree) builtin - electric-pair

Commenting tomtom/tcomment_vim (https://github.com/tomtom/tcomment_vim) linktohack/evil-commentary (https://github.com/linktohack/evil-commentary)

Linting/Checking w0rp/ale (https://github.com/w0rp/ale) builtin - flymake

LSP builting - lsp eglot (https://github.com/joaotavora/eglot)

tree-sitter builtin - tree-sitter emacs-tree-sitter/elisp-tree-sitter (https://githubhelp.com/emacs-tree-sitter/elisp-tree-sitter) Neovim ecosystem is a bit better

Doc in echo area Shougo/echodoc.vim (https://github.com/Shougo/echodoc.vim) builtin - eldoc

Run tests janko/vim-test (https://github.com/janko/vim-test) :custom (https://github.com/meain/dotfiles/blob/78ce688f2835f0527576ec20a9cb61c44225c267/emacs/.config/emacs/init.el#L1526-L1554) Neovim version is much better

Git commit info rhysd/git-messenger.vim (https://github.com/rhysd/git-messenger.vim) emacsorphanage/git-messenger (https://github.com/emacsorphanage/git-messenger) Neovim version is better

Linting for non-code davidbeckingsale/writegood.vim (https://github.com/davidbeckingsale/writegood.vim) bnbeckwith/writegood-mode (https://github.com/bnbeckwith/writegood-mode)

Autocomplete nvim-lua/completion-nvim (https://github.com/nvim-lua/completion-nvim) company-mode/company-mode (https://github.com/company-mode/company-mode) Emacs version is a bit more configurable

Jump to def with regex pechorin/any-jump.vim (https://github.com/pechorin/any-jump.vim) jacktasia/dumb-jump (https://github.com/jacktasia/dumb-jump)

Formatter w0rp/ale (https://github.com/w0rp/ale) lassik/emacs-format-all-the-code (https://github.com/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 (https://github.com/clemera/dired-git-info) Provides you with github like info in file browser thingy

• projectile (https://github.com/bbatsov/projectile) Project based workflows

• forge (https://github.com/magit/forge) Interactive with Github and other git hosting providers

• winner (https://www.emacswiki.org/emacs/WinnerMode) Retain/Undo-Redo window configs

• notmuch (https://notmuchmail.org/notmuch-emacs/) Email

• elfeed (https://github.com/skeeto/elfeed) RSS

• tramp (https://www.emacswiki.org/emacs/TrampMode) Rmote editing (not that reliable though)

• docker (https://github.com/Silex/docker.el) Docker interface from Emacs

• kubernetes (https://github.com/kubernetes-el/kubernetes-el) 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.

Write a comment
No comments yet.