Install Neovim
Yes, choose Neovim rather than Vim. Neovim is a fork of Vim that’s more actively maintained and has a few extra features.
Follow the installation instructions for your operating system in the Neovim Wiki. For example, on a Mac:
$ brew install neovim
Create a starter configuration
The easiest way to get started with Neovim is to use a starter configuration (a.k.a. a Neovim distribution). This will give you a basic configuration that you can customize as you learn.
Here are a few popular starter configurations:
- kickstart.nvim • The official Neovim kickstarter 🛠️
- LazyVim • A Neovim setup powered by lazy.nvim with great docs and active support via its GitHub Discussions 🛠️
- NvChad 🛠️
- AstroNvim 🛠️
To learn how to install multiple starter configurations and switch between them, see Switching Configs in Neovim.
Otherwise, you can roll your own custom config using resources like these:
- lazy.nvim • A modern plugin manager for Neovim • folke 🛠️
- Lua-guide • Neovim Docs 📚
- also available at
:h lua-guide
- also available at
- Nvim defaults • Neovim docs 📚
- runtimepath • Neovim config directories and what they’re for • Neovim docs 📚
- Nvim config folder structure • Neovim Discourse 💬
- From .vimrc to .vim • Vimways 📖
- Usage of ‘after/ftplugin’ directory for filetype-specific configuration • Reddit 💬
Improve your keymaps
- Vim’s main feature is the ability to map any action to any keyboard shortcut you like
- Experiment with changing some of yours so they make more sense to you
- To enable a pop up that helps you complete your
leader
key maps, install which-key.nvim
Links:
- 0 to LSP: Neovim RC From Scratch • ThePrimeagen 📺
- Learn How To Use NeoVim As an IDE • Percy Grunwald 📖
Learn and iterate slowly
- Take your time
- It’s easy to get overwhelmed if you try to learn and update everything at once
- Solve your pain points one-at-a-time and beware changing multiple things at the same time — if something’s broken, it‘ll be harder to figure out what to fix
- Beware of copying in large chunks of configuration from other people’s dotfiles
- It’s easy to end up with a configuration that’s hard to understand and maintain
- It’s better to start with a minimal configuration and add to it as you learn
Configuring DAP
- Automatically install underlying system-level debuggers using mason-nvim-dap
- Install nvim-dap
- Configure nvim-dap
- Adapter for each language
- Configuration for each language
- Support VS code launch.json files
- Can install plugins that automatically configure the adapters and configuration per language
- Not sure if they include preferring / including Vs code launch files
- Install nvim-dap-ui
- Automatically show/hide when nvim-dap launches/quits a debugger
- Configure keymaps
- Customize breakpoint signs
Links:
- How to debug like a PRO using Neovim • Miguel Crespo 📖
- Debugging Javascript applications with Neovim • Miguel Crespo 📖
- Neovim for Beginners — Debugging using DAP | by alpha2phi | Medium
- Debugging in Neovim • Harrison Cramer 📖
- Per project configuration / vscode/launch.json support ? · Issue #20 · mfussenegger/nvim-dap
Lua
- Learn Lua in Y Minutes • Learn X in Y minutes 📖
Vimscript
- Learn Vimscript the Hard Way • Steve Losh 📖
Inbox
- How I Set Up Neovim On My Mac To Make It Amazing • Josean Martinez 📺
- How to set up Neovim for coding React, TypeScript, Tailwind CSS, etc on a new M2 MacBook Air • Takuya Matsuyama 📺
- Making Neovim Look More Like Doom Emacs • DistroTube 📺
- My Two Cents on Neovim Configurations • ejv2 📺
- REST clients:
- rest.nvim • A fast Neovim http client written in Lua 🛠️
- vim-rest-console • A REST console for Vim 🛠️
- Edit quickfix list:
- Quickfix list, how to add and remove entries • Avoid a plug-in by trying the solution that adds a
dd
keymap to the qf file type? • Stack Overflow 👩💻
- Quickfix list, how to add and remove entries • Avoid a plug-in by trying the solution that adds a
- Close a buffer without closing its split:
- vim-bbye • Delete buffers and close files in Vim without closing your windows or messing up your layout 🛠️
- Can you make neovim warn you if your config maps the same keys multiple times? • Reddit 💬
- Replacing
null-ls
(archived):- try
nvim-lint
+conform.nvim
?- conform.nvim: another plugin to replace null-ls formatting • Reddit 💬
- mason-nvim-lint • Extension to mason.nvim that makes it easier to use nvim-lint with mason.nvim 🛠️
- try
guard
for both linting and formatting?- guard.nvim • async fast minimalist plugin make format easy in neovim 🛠️
- try
- Keeping config simple:
- What are some things you realized you didn’t need? • Reddit 💬
- Minimal config with lazy, treesitter, lsp-zero, telescope, git diffview and more - (single file, <150 lines of lua) • Reddit 💬
- nvim-starter • Neovim example configurations to help you start in your journey 👩💻
- kitty-scrollback.nvim • Open your Kitty scrollback buffer with Neovim • mikesmithgh 🛠️
- flash.nvim • Navigate your code with search labels, enhanced character motions and Treesitter integration - folke 🛠️
- telescope-file-browser.nvim • File Browser extension for telescope.nvim 🛠️
- use instead of a file tree in the sidebar?
- combine with mini-files for file system operations?
- or just use vifm in floaterm?
- Lightweight status lines:
- everybody-wants-that-line.nvim • Minimalistic, informative and elegant statusline for neovim 🛠️
- mini.nvim • Library of 30+ independent Lua modules improving overall Neovim experience with minimal effort 🛠️
- LSP:
- lsp-zero.nvim • A starting point to setup some lsp related features in neovim 🛠️
- UI:
- noice.nvim • Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu 🛠️
- Keymaps:
- Great idea for debugging keymaps: “About debug-mode: I use H,J,K,L (i.e. shit + h,j,k,l) for stepping in/out/over etc. But these bindings are only active when the debugger is running. It’s super convenient to step through code like that.”
- neogit • magit for neovim 🛠️
- auto-save.nvim • Automatically save your changes in NeoVim 🛠️
- testing