Moving from VS Code & WebStorm to NeoVim: A Fullstack Developer’s Guide

Blog

Posted by Nuno Marques on 7 Feb 2025

Why Move to NeoVim?

If you've used VS Code, WebStorm, or Notepad++, you might have encountered issues like:

  • Lack of true floating/detachable windows in VS Code (until recently).
  • WebStorm’s odd shortcut inconsistencies (e.g., duplicating lines up vs. down).
  • Slow performance in WebStorm and VS Code, where squiggly lines appear due to delayed linting and parsing.
  • Feeling that despite all the features, something is still missing in terms of speed, efficiency, and flexibility.

NeoVim is a modal text editor that fixes many of these issues, providing speed, extensibility, and complete control over your workflow. With a bit of setup, it can outperform traditional IDEs in both efficiency and developer experience.


What is NeoVim?

NeoVim is a modern fork of Vim that offers:

  • Blazing speed (no Electron-based UI overhead like VS Code or WebStorm).
  • Highly customizable environment (plugins, themes, keybindings).
  • Better terminal integration.
  • Improved asynchronous performance for tasks like linting and autocompletion.

When configured well (like ThePrimeagen’s setup), it becomes a fully-fledged IDE alternative.


Problems NeoVim Can Solve

| Problem | How NeoVim Fixes It | |---------------------------|-------------------------------------------------------| | Slow performance | No Electron, ultra-fast | | Lack of window detachment | Tmux + NeoVim gives real tiling window support | | Poor keyboard control | Vim keybindings = ultimate efficiency | | Heavy resource usage | Uses a fraction of WebStorm/VS Code’s memory | | Limited customization | Fully customizable with Lua configs | | Autocompletion & LSP lag | Native support for LSP (Language Server Protocol) | | Extensions causing bloat | Lightweight plugins via lazy.nvim |


Step-by-Step Guide to Installing NeoVim on macOS

1. Install Homebrew (if you haven't)

Homebrew is the best way to install packages on macOS.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. Install NeoVim

brew install neovim

3. Install Plug-Ins and LSP Support

You'll need a good plugin manager. The best modern choice is lazy.nvim.

Install lazy.nvim

git clone --depth 1 https://github.com/folke/lazy.nvim.git ~/.local/share/nvim/lazy/lazy.nvim

Now, create the config folder:

mkdir -p ~/.config/nvim && touch ~/.config/nvim/init.lua

4. Add Your Basic Configuration

Open the init.lua file in NeoVim and start with a basic setup.

nvim ~/.config/nvim/init.lua

Paste this inside:

-- Enable line numbers & syntax highlighting
vim.opt.number = true
vim.opt.relativenumber = true
vim.cmd [[syntax on]]

-- Set tab behavior
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true

-- Load Lazy.nvim
require("lazy").setup({
  { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" }, -- Better Syntax Highlighting
  { "neovim/nvim-lspconfig" }, -- LSP Support
  { "hrsh7th/nvim-cmp" }, -- Autocompletion
  { "L3MON4D3/LuaSnip" }, -- Snippet Engine
  { "nvim-telescope/telescope.nvim" }, -- Fuzzy Finder
})

Save and quit NeoVim by pressing:

ESC -> :wq -> ENTER

Now reload your config:

nvim

Essential NeoVim Commands You Need

| Action | Command | | ------------------------- | ------------------------- | | Save file | :w | | Quit NeoVim | :q | | Quit without saving | :q! | | Save & quit | :wq | | Find text in file | /search_term | | Replace text | :%s/old/new/g | | Open a file | :e filename | | Split window horizontally | :split or :sp | | Split window vertically | :vsplit or :vsp | | Move between splits | CTRL + w + h/j/k/l | | Toggle file explorer | :Ex (if using NERDTree) |


Making NeoVim Work Like an IDE

1. Install LSP (Language Server Protocol)

For fullstack development, you'll need TypeScript, JavaScript, and Python LSPs.

brew install lua-language-server
brew install typescript-language-server
brew install pyright

Now, add this to your init.lua:

require("lspconfig").tsserver.setup{} -- TypeScript LSP
require("lspconfig").pyright.setup{} -- Python LSP
require("lspconfig").lua_ls.setup{} -- Lua LSP

2. Install Treesitter (Better Syntax Highlighting)

brew install tree-sitter

Add this to init.lua:

require("nvim-treesitter.configs").setup {
  ensure_installed = "all",
  highlight = { enable = true },
}

Useful Plugins for Fullstack Developers

Here are must-have plugins to replicate IDE features:

  1. File Navigation: nvim-tree.lua (like VS Code’s Explorer)
  2. Autocomplete: nvim-cmp (IntelliSense-style)
  3. Git Integration: gitsigns.nvim
  4. Debugging: nvim-dap
  5. Telescope (Fuzzy Finder): telescope.nvim
  6. Status Line: lualine.nvim

Setting Up Tmux for Better Multi-Screen Support

One huge advantage of NeoVim is that it works with Tmux, allowing real detachable windows across multiple monitors.

Install Tmux

brew install tmux

Create a ~/.tmux.conf File

touch ~/.tmux.conf

Add this inside:

set -g mouse on
set -g history-limit 10000
bind r source-file ~/.tmux.conf \; display-message "Reloaded!"

Now, start Tmux:

tmux

Essential Tmux Shortcuts

| Action | Shortcut | | -------------------- | ----------------------- | | Split Horizontal | CTRL + b + " | | Split Vertical | CTRL + b + % | | Switch Pane | CTRL + b + arrow keys | | Create New Window | CTRL + b + c | | Move Between Windows | CTRL + b + n/p | | Detach from Tmux | CTRL + b + d |


Final Thoughts

Switching from VS Code or WebStorm to NeoVim takes some effort, but the benefits are immense:

Blazing fast performance
Full keyboard control
Completely customizable
No laggy UI or unnecessary bloat
Works seamlessly with Tmux for multi-monitor workflows

If you're coming from WebStorm/VS Code, the learning curve might feel steep, but within a week or two, you'll likely never want to go back.


Next Steps

  1. Try using NeoVim full-time for a week.
  2. Gradually replace old habits (mouse clicking, slow commands) with NeoVim shortcuts.
  3. Tweak your init.lua to fit your needs.
  4. Join the NeoVim community (Reddit, Discord, GitHub) to discover more.

Once you embrace NeoVim, you won’t just be using a text editor—you’ll have a supercharged, customizable development environment built exactly for you.

Happy coding! 🚀