👉
2025 Update: It has been two years since I published this. My set-up has changed since then. Some plugins/workflow below may no longer be accurate.

Hopefully this still gives you some idea on what you can do with neovim!

This is a rave about neovim. I've been using (neo)vim for nearly a decade now. Investing my time into learning how to operate it was the best decision I've made, as far as tech skills goes.

Why?

  • It lets me to take full advantage of my flow moments by helping me work faster
  • It's distraction-free – there are no shiny buttons or panels like in IDEs, and nothing that takes my focus away
  • It runs in the Terminal (my native environment for everything). I don't have to choose between my editor or Terminal or jankily embed a Terminal into my editor
  • It lightens the load on my wrists because I never have to use the mouse when editing (which is a huge QoL boost when working on laptops!)
  • It's lightweight – the CPU/memory footprint is >10x smaller than an IDE or other editors (except Sublime Text) on average

Plugins I'm using

You can find all of my neovim config here.

Here's what I can do without touching the mouse at all :-)

Auto-complete

0:00
/0:18

CTRL + N lets me to cycle through completions, with a small window displaying type information and docstrings.

0:00
/0:12

I can open up a project tree with <leader>; (powered by NERDTree), and do a filename fuzzy-search using <leader>t (powered by fzf.vim).

Fuzzy-search all files in directory

0:00
/0:13

<leader>s brings up a ripgrep window for fuzzy-searching text across the entire directory.

Browse to type signatures

0:00
/0:11

SHIFT + K gives me a popup with the type signature and docstring. It's a general function for displaying information about the current symbol. It can use the LSP or even man pages, so I can SHIFT + K almost anything to bring up its documentation when available.

Browsing to the full type definition (.d.ts) is triggered by gd keybind, which calls the jumpDefinition function of coc.nvim.

Autofix

0:00
/0:25

<leader>i sorts and organize imports. It calls the LSP's (tsserver in this case) organizeImport function via coc.nvim.

<leader>f formats the file using the same method via a configured formatter on the LSP (I'm using Prettier).

Like what you see?

Give (neo)vim a whirl! Once you get past the learning curve and start building muscle memory, you'll wonder why you didn't start using it earlier.