neovim
Neovim is a modern, Vim replacement. As of 2026, I think there’s not a lot of good reasons to use vim over neovim. Below, I’ll just use “vim” and “neovim” interchangeably. (btw, vim is “vi improved” so it was not the “original” anyway!)
As a successor of vim, it aims to be a fast light-weight, yet powerful and extensible editor that can be installed anywhere (see neovim.io). It is my go-to editor because of speed and powerful editing capacity.
As I wrote in Neovim zenmode setup for focused writing, it works well as a distraction-free writing app. At the same time, it provides a native Language Server Protocol implementation and highly extensible plugin systems, so you can make it as rich as most IDEs. It is endlessly configurable. Whatever you can imagine, you can find a plugin for that.
Speed, extensibility, ubiquity (minimum requirements for installation), … there are so many nice things about vim ecosystem. The only problem was that there was a huge barrier.
(queue “how to exit vim” memes)
But I think you may want to consider it again due to the AI agents like Claude Code. Now you can simply ask it to set up plugin manager and then get lots of help setting your neovim up just as you like it. Lua is a very simple language to learn and you don’t need a lot of effort to reach the level where you can read the setup scripts.
How to start with neovim?
Run vimtutor in your terminal—it’s a built-in interactive tutorial that teaches you the basics. You don’t have to learn every shortcut and keystroke.

Focus on the essentials first:
- Movement:
h/j/k/l(left/down/up/right),w/b(word forward/backward) - Editing:
dd(delete line),yy(copy line),p(paste) - Commands:
:w(save),:q(quit),:wq(save and quit)
After that, just gradually expand your capacity. Use :help liberally—neovim’s built-in documentation is excellent.
Configuration
Stick to Lua. You can write config files in either Vimscript or Lua, but stick to Lua—that’s the future.
Tips
Open URL under cursor
gx opens the URL (or file path) under the cursor using your system’s default handler. In Neovim 0.10+, this uses the built-in vim.ui.open() function (open on macOS, xdg-open on Linux).
Open files from Finder
- https://gregrs-uk.github.io/2018-11-01/open-files-neovim-iterm2-macos-finder/
- https://blog.schembri.me/post/neovim-everywhere-on-macos/
Keymaps
Plugins
Setup
- Use a single-file
init.luasetup at https://github.com/nvim-lua/kickstart.nvim and study it. TJ DeVries‘s Effective Neovim: Instant IDE is a good tutorial. -
Also check out 0 to LSP : Neovim RC From Scratch for tips to organize files more hierarchically rather than using a single, big
init.lua.