Moving from VS Code & WebStorm to NeoVim: A Fullstack Developer’s Guide
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:
- File Navigation:
nvim-tree.lua
(like VS Code’s Explorer) - Autocomplete:
nvim-cmp
(IntelliSense-style) - Git Integration:
gitsigns.nvim
- Debugging:
nvim-dap
- Telescope (Fuzzy Finder):
telescope.nvim
- 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
- Try using NeoVim full-time for a week.
- Gradually replace old habits (mouse clicking, slow commands) with NeoVim shortcuts.
- Tweak your
init.lua
to fit your needs. - 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! 🚀