
r/neovim

A method to learn Vim/Neovim without getting overwhelmed (Suggestions for beginners)
In this video, I explain a method I use to learn Vim/Neovim and focus only on what I need, avoiding information overload.
The method consists of 4 steps:
- Identify a problem
- Identify solutions to that problem
- Keep the solution that covers the most cases
- Learn the rest later
Are we a bit too much opinionated?
Hi there, not a rant. My full appreciation goes to nvim and its contributors. BUT, I'm on nightly and stumbled upon a couple of things that caught my eye as maybe a bit too much opinionated (or perhaps not __enough__):
1st. `:h dir-mappings`:
dir-mappings
• - opens the parent directory of the current file or directory.
overriding the opposite of \+`, [count] lines downward, on the first non-blank character linewise. Great lightweight plugin addition, netrw must go, but terrible default mapping imho.`
2nd. `:h al`:
al "all lines", select the whole buffer.
When used in Visual mode it is made linewise.
*v_il* *il*
il "inner line", select the current line without leading
or trailing white space. Fails on a blank or
white-space-only line.
When used in Visual mode it selects the line under the
cursor and switches to charwise Visual mode.
it would have made sense to me for \al` to be `around`-line, the contrary of `inner`-line, thus selecting the surrounding newline characters not magically become a mnemonic for "all"`
How do I get this diagnostics in Neovim?
Hi r/neovim !
I'm learning a Rust library named Dioxus. When I was following along its tutorial, there's some code disabled in the default Cargo feature.
In Neovim, said code has no hints or diagnostics from Rust Analyzer. There is no useful information to tell me what is going wrong. However, when I open the same file in VS Code, the reason is clearly stated in a pop.
After digging into Rust Analyzer's doc a little bit, I found that I could set a flag to make Rust Analyzer recognize all features.
So My question is not about this particular problem about Rust Analyzer, but rather, how do I get the same information (telling me that "code is inactive due to ...") in Neovim?
Thank you for your help!
procman.nvim – stop context-switching between terminal splits to run your services
I kept ending up with 3-4 terminal splits open just to run backend + frontend + worker for the same project, and losing track of which one was still running or had crashed. So I built procman.nvim to manage that from inside Neovim instead.
What it does:
- Auto-discovers services in your workspace: package.json, Cargo.toml, go.mod, and .NET (.sln/.slnx/.csproj) — no config needed for the common case.
- Side panel showing status (running/stopped/failed/starting) and memory usage (RSS, including child processes) for every service, grouped by ecosystem (.NET / Node / Rust / Go / Custom) in collapsible sections.
- Start/stop/restart individual services or all of them at once, straight from the panel.
- Per-service logs (stdout/stderr) in a floating window.
- :ProcManAdd — add a custom command via prompt without hand-editing config.
- Per-project config via .procman.lua (auto-generated template with what was discovered) if you need to override anything, merged with your global setup().
https://github.com/Anderson-Vilela-op/procman.nvim
-- lazy.nvim
return {
"Anderson-Vilela-op/procman.nvim",
opts = {},
}
It's fresh (first public release), so bug reports, feature requests, and PRs are very welcome. Curious what workflows people have for this today — toggleterm + manual splits? overseer.nvim? Something else entirely?
Switching to nvim as my main text editor
Biggest surprise for me this year, fully switching main text editor to nvim. Uniform text editing experience accross all machines. Debian, android (Termux), mac, WSL. Loved it
Shout out to the great community!
Search & Replace Multiple Files - A review in 2026
Search and replace in a single file is easy in Neovim, but replacing text across an entire project or workspace can be trickier, or require the help of a plugin.
In this video, I review 5 different methods for search and replace across multiple files:
- Using MagicDuck/grug-far.nvim
- Using nvim-pack/nvim-spectre
- Using :args and :argdo
- Using the quickfix list and :cdo
- Creating a custom command with ripgrep and :grep
New plugins and AI
Hello, just to clarify. I have been programming since 2021 to 2023 almost daily. After some stuff/burnout I haven't touched code much and a lot of things changed. I feel like programming isn't what it used to be, still remember searching SO for some specific problem and writing code by hand, because AI wasn't usable that much.
At that time I created some plugins (Hypersonic, BufferTabs, BufEx) and it was thing that really made me happy so I wanted to ask you, if its still worth it to create new plugins. If the community of people who code by hand is smaller or is it same as it was before.
Vim in WSL: `+yy` gives `W23: Clipboard register not available` despite `+clipboard`
I'm running Vim inside WSL and can't get the \`+\` register to work.
When I try:
`"+yy`
I get:
`W23: Clipboard regiter not available, using register 0`
However:
:echo has('clipboard') "1
:echo has('unnamedplus') "1
vim --version | grep clipboard
+clipboard
+xterm\_clipboard
I'm running /usr/bin/vim.gtk3, but:
- $DISPLAY is empty
- $WAYLAND\_DISPLAY is empty
- xclip/xsel are not installed
- clip.exe workgs from WSL (echo test | /mnt/c/Windows/System32/clip.exe)
Is this expected because I'm runnign a headless TTY, or should `vim.gt3` still be able to use the Windows clipboard? Is `win32yank.exe` the recommended solution?
Forked and fixed an array of issues with the popular LazyGit plugin for NeoVim (NOT VibeCoded)
Hey all,
I recently re-wrote the popular LazyGit plugin that is often recommended here for integrating LazyGit into NeoVim. I was using it for some time but since I only started using NeoVim, I was not very experienced in configuring it but overtime I noticed many issues the plugin has
I raised an MR with a fix for one of the issues but while fixing it, I realized the codebase is very bloated and was suffering from the burden of legacy support, so, I have forked and overhauled the codebase and added a few meaningful QoL improvements, namely:
- Instead of using
vim.g.*for configuration, it now uses the conventionalsetup({})function - Plenary-based windows no longer spawn new
lazygitprocesses, while leaking older ones (this was the issue my MR focused on). - You can now use
*wildcards to specify custom lazygit configurations (in case you divide them into multiple files or whatever). - Plenary based buffers, as with regular buffers, now get custom buffer and window properties. This was not done in the older code for some reason.
- Replaced legacy VimScript FFI calls (such as through
vim.fn.*methods) withvim.api.*wherever possible.
The only major trade offs are:
- No more Vim support (I removed all VimScript code)
- Needs NeoVim 0.10 >=
Link to my fork: https://github.com/103sbavert/lazygit.nvim
Also, AI was used, but for adding LuaCATS doc comments for type hints and completions, to re-arrange already finished code into different files (without changing its internals or logic), and to understand the previous code structure but every line of code is hand crafted and well understood by me. If you find any issues, please report them. This was a major re-write so some things may have fucked up, let me know if that's the case.
Also, I hate vibe coding, so rest assured, this is not one of those shitty AI-slop plugins.
[Plugin] hover-notes.nvim
Hi everyone!
I'm excited to share with you new plugin: hover-notes.nvim
The main goal of this plugin is to add the ability to attach notes to words and view them in a floating window
The same note is displayed for every occurrence of this word (in the same category), not only in specific line/file/buffer
Features:
- Notes can be grouped by categories with the same formatting
- A category can be set for a workspace, a buffer, or an individual file
- Retrieves the closest matching word (up to a difference of half the word's length)
Weekly 101 Questions Thread
A thread to ask anything related to Neovim. No matter how small it may be.
Let's help each other and be kind.
Update: Token color scheme now has more variants
**UDPATE: There is now also a token-ultra variant of the theme**
Hello everyone
I have added 2 new variants to Token that are a bit cooler compared to the classic version of Token. These variants are also generated for all themes in /contrib in the GitHub repo.
Installation and configuration instructions are on GitHub https://github.com/ThorstenRhau/token
I hope you enjoy the theme
suannhai.nvim -- a minimal neovim colorscheme for consistence across c++, c, rust, and python.
Hey, everyone!
I've finally finished putting a collection of colorschemes I've been working on. They're inspired by traditional colors from Formosa and Nippon colors, with 8 variants across both dark and light themes.
Welcome to review, test, report bugs, or submit pull requests!
Repos:
- Neovim: https://github.com/WeiTing1991/suannhai.nvim
- Part of main color schemes: https://github.com/WeiTing1991/suannhai-theme
rwth.nvim -- koda.nvim with nice blue colors
Hey, everyone!
I've made a fork of https://github.com/oskarnurm/koda.nvim/ with RWTH-uni colors (because they are blue and nice). Thought that maybe someone else would like to take it for a spin! There are also couple of extras like themes for ghostty and kitty + some of my settings for `mini.pick`, `mini.files` and `telescope` to make them pop up.
Please tell me your thoughts (I'm pretty sure it is not for everyone) and if you find something broken and can fix it, please do! Literally everything is broken, I'm sorry...
Repos:
- https://github.com/mryodo/rwth.nvim
- https://codeberg.org/mryodo/rwth.nvim
PS shout out to incredible u/echasnovski and u/karnurm for their work!
scotopia.nvim - review and contribution required
Excited to share my first neovim theme, Scotopia (SayanShankhari/scotopia).
It's main goal is to be dead simple yet low eye strain for long coding sessions.
The colors are inspired by following well known themes,
"folke/tokyonight.nvim"
"ellisonleao/gruvbox.nvim"
"craftzdog/solarized-osaka.nvim"
"rebelot/kanagawa.nvim"
"Aejkatappaja/cendre"
"catppuccin/nvim"
"nyoom-engineering/oxocarbon.nvim"
"elvessousa/sobrio"
Upon trying out many color combinations for now settled in with only two theme variants: mahogany (dark) and hazelnut (light). Might be ugly for somebody but changes are heartly welcomed along with the reason details.
Later on will add more themes and fix existing theme issues.
Also i have two tiny custom libraries incoming into this project, "SayanShankhari/colorlib" and "SayanShankhari/colordot.nvim".
Any kind of help or contributions growing this project will be much appreciated.
GitCompanion.nvim | A Lightweight Floating Git Interface
GitCompanion.nvim
https://github.com/Darkskittlz/GitCompanion
A lightweight, terminal-native Git interface floating window for Neovim. Effortlessly inspect diffs, manage branches, stage modified files, manage stashes, and handle merges or commits without leaving your editor.
Features
- Multi-View Interface: Fast cycling across Branches, Files Changed, and Stashes views.
- Live Code Changes Panel: Instant diff previewing for commits, staged/unstaged changes, and stashes.
- Streamlined Branch Operations: Create, checkout, merge (regular, squash), pull, and push branches directly from floating UI modals.
- Commit & Stash Workflows: Built-in title/description commit dialogs and quick stash creation/popping.
- Keyboard-First Navigation: Standard Vim motions (
j,k,h,l) and explicit hotkeys for quick execution. - Help Modal: Instant keymap reference available anywhere via
?.
Screenshots
File Status & Diffs
View staged/unstaged files and preview line diffs in real time.
Stash Management
Inspect saved stash items alongside their code modifications.
Commit Creation Modal
Dedicated floating modal to write commit titles and detailed descriptions.
Interactive Branch Operations
Create new branches or launch regular/squash merge workflows seamlessly.
Branch Creation
Interactive Merging
Built-in Keymap Help Modal
Press ? inside any window to toggle the interactive cheat sheet.
Installation
Using lazy.nvim
{
'Darkskittlz/GitCompanion',
dependencies = {
'nvim-lua/plenary.nvim',
},
keys = {
{ '<leader>gc', '<cmd>GitCompanion<cr>', desc = 'Toggle GitCompanion' },
},
opts = {},
}
Tree-sitter grammar for (pre-release 0.2.0)
Hi! Me again :]
I'd love to share my progress on tree-sitter-rocq
https://github.com/aruzdh/tree-sitter-rocq
Pre-release 0.2.0 focuses on mirroring some rules from the official reference manual, so anybody who wants to contribute or give it a look can have a better understanding by following the official grammar.
Plus, I'm currently working on (SF) Imp and (SF) Hoare Logic! This will be a great improvement, especially for those who use SF to learn Rocq.
Here is a preview of those features. Any suggestions, comments, or stars on GitHub would mean a lot!
What do you use to navigate around multiple files? Help me find the one I need/like :)
So.. the thing is I am needed to work with multiple files 5-7 at the same time and need to jump between them constantly. I'd like something a plugin/inbuilt system to help me navigate those :) Here is my journey so far
Neovim Marks
This was the first one I used. Pretty great, ngl, but reaching ` to constantly was a hassle, and I couldn't even manage my marks, so... I tried it for a few weeks before deciding it's not for me.
Snipe.nvim and arrow.nvim
I used it a while ago, so I don't remember the exact specifics (sorry about that :P), but it needed me to open a menu instead of directly switching to a file I needed, so I used it for a few days and then decided it doesn't fit in my use case. I might give both plugins a try again, though. :)
Harpoon
I guess this is the most famous among the ones I've tried, and Prime larping about it too much. So I gave it a shot, pretty intuitive NGL, and loved it too. I need to work with multiple files, and this seems like the best and safest bet because, AFAIK, it leverages the inbuilt Neovim mark system. I had it bound to <C-h>, <C-j>, <C-k>, <C-l>, and <C-;>, but if I had more than 5 files, then it fell flat on its face. Then I started using g<num>. Pretty good, but needing to reach to the numrow every time to change files is such a hassle :(
I'm still using it. Don't get me wrong, it gets the work done just fine, but it adds a certain amount of friction that I didn't get with <C-<letter>>.
So, any suggestions on what I can do? I don't even know what I want, which is the hardest part. I want something to just fit into my workflow without creating friction. Thanks for the read, and any and all suggestions are welcome.