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
- Install nvim-dap-ui
- Automatically show/hide when nvim-dap launches/quits a debugger
- Configure keymaps
- Customize breakpoint signs
Links:
- DEBUG in Neovim. Like a BOSS. • DevOps Toolbox 📺
- Debugging In Neovim (ft BashBunni) • TJ DeVries 📺
- 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 · mfussenegger/nvim-dap
Lua
- Everything you need to know to configure neovim using lua | Devlog • Great overview • Heiker Curiel 📖
- 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 📺
-
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 🛠️
- The Holy Grail of Neovim Git Integrations • Neogit is a replacement for fugitive • DevOps Toolbox 📺
-
auto-save.nvim • Automatically save your changes in NeoVim 🛠️
-
mikesmithgh/kitty-scrollback.nvim: 😽 Open your Kitty scrollback buffer with Neovim. Ameowzing! - nvim plugin to search kitty output more easily
-
dotfiles/config/nvim/plugin/statusline.lua at main · ahmedelgabri/dotfiles - configure a custom statusline like this that loads quickly?
-
statusline: A Simpler Vim Statusline · Jorge Israel Peña
-
statusline: Custom Neovim Statusline
-
statusline: A boring statusline for Neovim
-
Show mode in statusline in Vim - Stack Overflow - wrap expressions used in the definition of
statusline
(e.g. function calls) with%{}
to reevaluate them whenever the statusline is updated (otherwise the function will only be invoked once on startup) -
Jupyter:
-
Telescope:
- danielfalk/smart-open.nvim: Neovim plugin for fast file-finding • smarter find file sorting (telescope extension) 🛠️
-
GitHub - epwalsh/obsidian.nvim: Obsidian 🤝 Neovim • makes vim a viable option for editing obsidian notes 🛠️
-
SPEED UP your Vim navigation skills! • demonstrates that the fastest way to navigate is generally fuzzy-finding, with harpoon becoming a useful improvement on marks in large codebases • DevOps Toolbox 📺
-
The Ultimate Database Control. Right WITHIN NEOVIM • How dadbod (plus a couple UI plugins for it) allow you to connect to and query databases with auto completion inside nvim for a much better experience than the CLI • DevOps Toolbox 📺
-
These HIDDEN MOTIONS in Neovim will CHANGE how you work • Defining key maps for custom treesitter objects you use regularly makes it quicker to edit and navigate your code • DevOps Toolbox 📺
-
jackMort/ChatGPT.nvim: ChatGPT Neovim Plugin: Effortless Natural Language Generation with OpenAI’s ChatGPT API • requires your own API key…billing concern? 🛠️
-
jellydn/CopilotChat.nvim: Chat with GitHub Copilot in Neovim 🛠️
-
Jupyter:
-
I Tried Every AI Coding Assistant for Neovim • He recommends turning Copilot on when you need more help, with Codeium on by default as a handy completion sidekick • DevOps Toolbox 📺
-
A guide on Neovim’s LSP client | Devlog - fantastic article explaining how to implement lsp support for any language server with no third party plugins - Heiker Cureil
-
olacin/telescope-cc.nvim: A Telescope integration of Conventional Commits. - a Telescope integration of conventional commits (nice because it all happens in a series of pop-up windows while you can see your changes behind them (e.g. if using vim-fugitive)
-
Neovim for Beginners — Conventional Commits | by alpha2phi | Medium
-
Run and Debug TypeScript Unit Tests in Neovim • How to run and debug
jest
andvitest
unit tests in vim using LazyVim,neotest
anddap
• Elijah Manor 📺 -
Rethinking Neovim as a Tool For Writers • How to focus and improve your writing with Markdown Preview, Twilight, Zen Mode, Pencil, Spellcheck and ChatGPT • DevOps Toolbox 📺
-
Neovim — Mapping your way to productivity (NeovimConf.live talk) - nice explanation of the value of thoughtfully customizing your keymaps, preferring short ones for your most common actions and binding complicated custom functionality to a few quick keypresses - Ben Frain
-
How Neovim helped improve my productivity | by Kaustubh Patange | Medium - Kaustubh Patange
-
Save neovim files automatically with auto-save.nvim - linkarzu