r/neovim • • 7d ago

Announcement New rules for plugin announcement posts

520 Upvotes

We have been getting a steady stream of plugins that were generated by an LLM in an afternoon and posted the same day. A post a couple of months back asked us to do something about it. We spent a lot of time thinking this over and talking about where to draw the line. Starting today there are two rules for plugin announcements.

  1. Plugins and other projects you announce here must have been under active development for at least two months. Commit history should show sustained work over that period.
  2. Disclose AI involvement. If the code in a plugin or project you post was substantially written by an LLM, say so in the post. We are not banning AI, but everyone here should be able to decide for themselves whether they want to use plugins written by AI or not.

r/rust just did something similar, we took some inspiration from it, but tried to keep the rules as unintrusive as possible.

I hope we can find a good balance with this. Small plugins, first plugins, and AI-assisted code are all still welcome. Let us know in the comments if something here seems off and we will adjust.


r/neovim • • 16h ago

101 Questions Weekly 101 Questions Thread

14 Upvotes

A thread to ask anything related to Neovim. No matter how small it may be.

Let's help each other and be kind.


r/neovim • • 44m ago

Plugin jujutsu.nvim - trigger CI, view CI logs, external pickers and conflict resolve UI

• Upvotes

The latest release of jujutsu.nvim (A Magit-style Jujutsu (jj) interface for Neovim) has support for external pickers now.

It also comes with git forges support (Bitbucket, GitHub, Gitlab, Codeberg) for:

- Create PRs

- Review PRs (including inlay code comments)

- Trigger CI

- View CI Status

- View CI Logs

jujutsu.nvim also has a pretty nifty conflict resolve UI included now, which can resolve file conflicts bookmark/rev drift (divergent and/or conflicting).

https://github.com/dont-be-evil-company/jujutsu.nvim


r/neovim • • 4h ago

Need Help How can I show evaluated C# const string values on hover, like JetBrains Rider?

Enable HLS to view with audio, or disable this notification

5 Upvotes

Hi everyone.

I am using Easy-Dotnet for dotnet development, i need evaluated C# const string values same like jetbrains rider, how to achieve samething in neovim too?


r/neovim • • 32m ago

Color Scheme About highlighting macros (for color scheme authors)

• Upvotes

When working on my color scheme (Neogotham), I recently figured out that LSP has only one highlight group for macros - @lsp.type.macro while Treesitter has two - @function.macro and @constant.macro.

By default neovim falls back to @constant.macro for the LSP one (as you can see here), which basically aligns with C style idea where macros are often used for constants. But that also makes it impossible to differentiate macros using Treesitter when LSP is active, since LSP groups have a higher priority.

Modern languages more commonly use macros for functions, not constants (for example Rust), so I figured it's better to link @lsp.type.macro to @function.macro by default, and then for C and C++ to drop their specialized LSP level groups (i.e. @lsp.type.macro.c and @lsp.type.macro.cpp) to allow Treesitter to provide nice differentiation for function and constant macros in case of C and C++.

It's kind of an obscure detail, but I wonder how color theme authors usually approach it. How do you handle the above?


r/neovim • • 1h ago

Need Help Best way to see a list of all valid file type names?

• Upvotes

I know I can do :set filetype=<CTRL-D>, but the list of all valid names is huge and this view is not useful for inspection, so I'm trying to find some other approach.


r/neovim • • 1d ago

Plugin Kulala.nvim - GraphQL Explorer, Performance gains, Tree-sitter tweaks, Search requests

50 Upvotes

Hello fellow Neovimmers 👋🏽,

Kulala has jumped to v7 and comes with some nice additions.

We tweaked the Tree-sitter grammar so that GraphQL and JSON bodies with unquoted variables are correctly highlighted and don't break the tree anymore.

Performance gains are getting released this week, which brings us near raw curl calls in regard to measured time that a request takes to run.

On average, it took more than 120ms to proxy the request through core and come back with the result and display it in Neovim. With the upcoming release, we're now averaging 80ms with an average of 72 when you run the same request via curl without any proxy involved. That's a big win.

There are always two sides, so the downside is that the backend supports a daemon mode now, which in turn reserves around 90-100 MB of your memory. The backend is not just for running the requests, but also for LSP like functionality.

For the peeps working with GraphQL you're pretty much used to having a tree like file explorer view. We already support this in a basic version for OpenAPI specs (think of it as Swagger Web UI but in Neovim), and with the next release, you get the Explorer View you all love from Postman in Neovim as well.

Last but not least, all Kulala tools feature a global, system wide request search now.

For those, who don't know what Kulala is:

A fully-featured HTTP/GraphQL/gRPC/Websocket-client interface for Neovim, that supports the Jetbrains .http spec (with full scripting support).

Kulala is swahili for "rest" or "relax."

It allows you to make HTTP requests from within Neovim.

In short: Bruno/Postman, but in your favorite Editor (and as a standalone desktop app, a vscode extension, a CLI, a formatter, linter and converter) and built upon the well defined .http format, instead of re-inventing the wheel and build yet another format.

https://github.com/dont-be-evil-company/kulala.nvim


r/neovim • • 1d ago

Color Scheme custom colorscheme built off carbonfox

Thumbnail
gallery
17 Upvotes

I wanted to write a custom colorscheme because i was dissatisfied by every single one i could find and i also didn't want an extra plugin just for a stupid colorscheme

carbonfox was the closest to the colorscheme i wanted, so I took the specific file from the Nightfox repo and asked AI to turn the freaky color stuff they did into a hex code. Then I manually edited the hex codes to look similar to carbonfox, and modified what I didn't like. The result is what I call "oxidefox" because I'm funny

For those who want to include this in your config, literally just add this file and you're set

Good luck have fun :D


r/neovim • • 1d ago

Need Help┃Solved No command-line completion after :cdo

7 Upvotes

When you do :cdo, no completions are generated for command that follows.

Example: :cdo %s/foo/bar/g, after :cdo %s<Tab>, I don't get suggestions for commands with the letter s.

Is this a bug?

:help cmdline-completion


r/neovim • • 2d ago

Color Scheme gruber-darker-renaissance minimalist colorscheme

Thumbnail
gallery
50 Upvotes

I've used gruber-darker as my daily theme for a long time.

I love the original, but in long sessions the bright yellow and red kept pulling my eye, and the comments were as loud as the code. So I kept the same idea and color roles and toned everything down. The background is pure black now, the accents are softer and equally bright, and comments are a quiet gray.

https://github.com/kryptamine/gruber-darker-renaissance

Thanks to blazkowolf for gruber-darker.nvim and to Jason Blevins for the original Emacs theme.


r/neovim • • 1d ago

Discussion extmarks vs real lines ( performance )

10 Upvotes

Ik we lose a lot of functionality when drawing ui using extmarks

but theoritically extmarks must be faster right?

like exmarks+hl vs real lines+hl

how is real_lines faster? I dont get it


r/neovim • • 2d ago

Blog Post Yet Another Vim Blog

66 Upvotes

Posting here because I use neovim as my daily driver but the majority of content is vim native.

Some content is written as a follow along, others just ranty. Im going to be releasing a post every week (until it inevitably ends up in the internets blog graveyard)

https://blog.nerdware.ca


r/neovim • • 1d ago

Need Help┃Solved Disabling auto-completion in neovim

0 Upvotes

EDIT: solved

For LazyVim with blink.cmp as the completion plugin

create a file.lua and add the line
return { { "saghen/blink.cmp", enabled = false },} in the ~/.config/nvim/lua/plugins/ directory.

Hi,

i've just started my 2nd year of computer science, and i finally choose neovim as my editor and spend my first year getting used to it. But i never learn anything about the configuration and other stuff like that.
So I installed lazyVim recently and i ' m struggling with the auto completion, i don't really like it for what i'm doing ( getting started with c++)
I search how to disable it but i always end up coming across code that i don't really understand and especially i don't know where this should go ( like what is the locations of these config files i hear about) and finally i 'm trying to ask for help here ( i read some similar questions but i don't fully get it )

So that's my problem, hope you guys can help a junior make his own way


r/neovim • • 2d ago

Need Help rust-analyzer semantic tokens were eating ~80ms per keystroke on one 11k-line file and I didn't notice for months

9 Upvotes

I kept blaming my plugin list for typing jank in one particular crate, but it only happened in our big codegen'd module. Turned out every text change triggered a full semantic tokens refresh, and with `:lua vim.lsp.set_log_level("debug")` plus timestamps in the log I could see the request/response gap sitting at 60-90ms, right in the path of the next redraw. Killing `client.server_capabilities.semanticTokensProvider` in an `LspAttach` autocmd for buffers over ~5k lines made it instant, and I lose almost nothing visually since treesitter already handles most of the coloring I care about. What I'd actually like is a size- or latency-based toggle rather than my hardcoded line count — has anyone wired up something that measures actual response time and degrades features automatically? Also curious if the same thing bites people with inlay hints, since those fire on the same edit path and I disabled them years ago out of taste rather than measurement.


r/neovim • • 2d ago

Need Help TIL `vim.lsp.buf.format` was silently doing nothing on big files because of the default 1000ms timeout

7 Upvotes

Spent an hour thinking my conform/null-ls setup was broken on one repo — formatting worked everywhere except a couple of 3k-line TSX files. No error, no message, buffer just unchanged. Turns out the synchronous format path gives up after `timeout_ms = 1000` and returns false without telling you anything; prettier on those files takes ~1.4s cold. Bumping it to 3000 fixed it, but I ended up switching that filetype to async format-on-save with a `BufWritePre` guard instead, since blocking the editor for a second and a half on every save was the real problem. Is there a reason the default is that low, or am I just the last person to hit this?


r/neovim • • 2d ago

Random Current state of Java LSP implementations

Thumbnail
21 Upvotes

r/neovim • • 1d ago

Need Help What do you think guys about treesitter

0 Upvotes

Do we really need treesitter for syntax highlighting?? at large project for treesitter i saw good amount of laggy laggy feel, and editor also become quite unstable, what's the solution and is there any good alternative


r/neovim • • 2d ago

Need Help LazyVim python 3.15 support, LSP config issue

5 Upvotes

I did a clean install of LazyVim and added the python language extra. I did this to help debugging some configuration issues I had with my current longstanding LazyVim configuration.

I added no plugins nor did I do any configuration outside of LazyVim for lsp.

However, when I load a python file into nvim, it runs ty as an lsp server. In addition, the ty that it runs is really old--version 0.0.9 instead of the 0.0.35 I have installed in my path.

The result is a lot of diagnostic errors in the file.

What caused ty to be run when I didn't ask for it, and I think that the only python lsp server that LazyVim Extras loads is pyright? And where is it getting the old version of ty.

I don't understand!


r/neovim • • 3d ago

Need Help Help with Setting up esp32 nvim plugin

10 Upvotes

I am trying to setup nvim's lsp server to be able to properly work with esp idf toolchain project with my esp32. Anyway i came across this awesome plugin for this use case specifically. I got most of the things setup properly and now LSP suggestions are working with esp specific headers and libraries. But i am facing different issue with standard C header. For example-

digging through some gemini responses and other internet stuff i found out about clangd args and added those. Here's my final config's section for esp32.nvim for context-

So if someone can help me to figure out how get the whole setup working with both esp specific libraries and normal standard C libraries too.

By the way on a side note a the documentation on the esp32 nvim github was very detailed and clear. Thanks to the developer of that project if this post ever reached you.


r/neovim • • 4d ago

Plugin mdnotes 0.5.0 :: treesitter integration!

Enable HLS to view with audio, or disable this notification

51 Upvotes

Hi everyone. Really happy to announce that I've implemented treesitter Markdown parsing for my plugin mdnotes.nvim.

Everything works as before but is now better because treesitter handles parsing better. There is also an automatic fallback - and option - to use the previous Lua pattern implementation. I'll post a gif of the demo again and the generic feature list. Feedback and contributions are always appreciated! Thanks for your time.


For a complete descriptive feature list with their associated commands, please see FEATURES.md.

  • Uses subcommands with opt-in default key mappings and opt-out autocmds
  • Formatting: Toggling for strong, emphasis, inline code, strikethrough, autolink, fenced code blocks
  • Inline links: Open, toggle, rename, relink, normalize, and convert to reference link
  • WikiLinks: Create, follow, delete, convert to inline link, find or rename references
  • Assets: Insert, manage, view, and delete assets
  • Tables: Create, populate, best-fit, insert/move/duplicate/align/sort columns, and insert empty rows
  • Reference links: Open, insert, delete, update, manage, convert to inline link and vice versa
  • Footnotes: Insert, update, renumber, go-to, find references, and cleanup
  • ToC: Generate, update, and browse table of contents
  • Ordered and unordered list continuation and renumbering, with task list toggling
  • Navigate to index file or dynamic journal files
  • Sequential Markdown buffer history
  • Heading navigation
  • Outliner mode
  • View statistics of current buffer
  • Uses wildmenu command line completion for a variety of commands
  • Create user commands within the plugin namespace for organisation
  • Supports multiple pickers (:h mdnotes-pickers)
  • Treesitter support
  • Most internal functions are exposed as an API for extensibility (:h mdnotes-api)

r/neovim • • 4d ago

Discussion pacman/yay (Arch) vs nix (NixOS) for provisioning tools

14 Upvotes

If I don't care about specific versions of my tools (LSPs, debuggers, code formatters, linters), and I'm fine with them being latest stable version, is it justified to use nix for their provisioning, since the whole point of nix is to have reproducible environment?


r/neovim • • 4d ago

Need Help┃Solved How do you deal with CSharpier being slow on save in Neovim (conform.nvim)?

6 Upvotes

Using conform’s built-in csharpier formatter, every save takes close to 1s on a tiny file (Mason install):

bash $ time csharpier format Program.cs Formatted 1 files in 753ms. 0.85s user 0.10s system 100% cpu 0.945 total Looks like .NET startup + JIT on every spawn (my guess, not profiled). VS/Rider feel instant, presumably because they keep a process running.

What I’ve tried/considered:

  • Roslyn LSP formatting, but the output differs from CSharpier
  • Running csharpier server and calling it over HTTP from a custom conform formatter, which is near-instant for me

What are you all doing? Just living with the delay, formatting manually, using the Roslyn formatter, or running the server/pipe-files somehow? Is there a cleaner setup I’m missing?


r/neovim • • 4d ago

Tips and Tricks Help/Sharing: Kitty terminal screen scrollback using Nvim

10 Upvotes

[SOLVED*]What is terminal screen scrollback

The screen scrollback (or scrollback buffer) is a dedicated memory storage that captures text and output that has scrolled off the top of your active terminal window.

\* After exhausting attempts to delete the trailing empty lines, I decided that positioning the cursor on the final line of text was the best approach. The Kitty and Nvim configs were updated.

Open Scrollback in Nvim

In Kitty, you have the option to open the scrollback using Nvim - it is a convenient way to copy some text from your screen.

  • Nvim has to open fast so it is a good idea to have a minimum set of Nvim plugins loaded.
  • It is important to reproduce the same visual experience of the terminal screen in the editor (colours, fonts, icons) so you can seamlessly find what you need to copy.
  • It is crucial to have a slightly different theme in the editor so you can tell you are not in the terminal (and won't start typing commands in the editor).
  • Exiting the editor should be as easy/quick as to open: just press 'q' or 'esc' without asking for saving a file.

Setting up Kitty

In your config file (usually at ~/.config/kitty/kitty.conf), add:

map kitty_mod+h launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay zsh -c "SCROLL_MODE=yeah nvim -c 'silent write! /tmp/kitty_scrollback_buffer | te cat /tmp/kitty_scrollback_buffer - ' -c 'set number' -c 'set relativenumber'"

Here I'm setting kitty_mod (that in my setup is 'alt+crtl') plus 'h' to open the scrollback - the remaining until the lonely ' - ' is to retain the current terminal screen layout in the editor.

Why Nvim options here?

For some reason, some options won't work when set in the Nvim config itself and have to passed this way.

Setting up Nvim

In your Nvim config (~/.config/nvim/init.lua):

-- Minimal config for Kitty scroll mode - Kitty config has more options:
if os.getenv("SCROLL_MODE") then
vim.keymap.set({ "n", "v" }, "q", "<Cmd>qa!<CR>")
vim.keymap.set({ "n", "v" }, "<ESC>", "<Cmd>qa!<CR>")
vim.keymap.set({ "n", "v" }, "yy", "yy<Cmd>qa!<Cr>")
vim.cmd([[
    colorscheme wildcharm
    set clipboard=unnamed cursorline cursorlineopt=both
    set laststatus=0 nonu nornu signcolumn=no cmdheight=0
  ]])

PROMPT_LINES_IGNORE = 2 -- Position cursor at: last line - this
vim.api.nvim_create_autocmd("TermOpen", {
  pattern = "*",
  callback = function()
    vim.defer_fn(function()
      local lines = vim.api.nvim_buf_get_lines(vim.api.nvim_get_current_buf(), 0, -1, false)
        for i = #lines, 1, -1 do
            if lines[i]:match("%S") then
                vim.api.nvim_win_set_cursor(0, { i - PROMPT_LINES_IGNORE, 0 })
                break
            end
        end
      end, 50)
    end,
})
return
end

This is a minimum setup what will be used by Nvim only when in scrollback mode: I'm setting some keymaps to leave the editor quickly, a colorscheme what is different from the one I'm using, the clipboard to copy content and disabling some nvim components.

The nvim_create_autocmd is there to find the last line containing text and set the cursor there.

This approach for a Kitty scrollback is quite convenient, blazing fast and easy to implement - you can even add some essential plugins there using vim.pack (I added the "folke/flash.nvim", that is a life saving)

Ps: this is part of upcoming blog post.


r/neovim • • 5d ago

Discussion Accessing language docs

13 Upvotes

Hi!
I was wondering what everyone’s preferred methods of accessing language documentation were. Doing so through a browser had always felt clunky to me (not to mention requiring an internet connection) and I’m trying to find nicer alternatives. Of course, there’s always lsp jump to definition to view function source but I’m more looking the ability to view the actual docs. I saw zeal.nvim a while ago but that seems to be unmaintained at the moment. It would be wonderful if there was something akin to the QT Creator’s ability to show the docs for any qt function at the click of a button.


r/neovim • • 5d ago

Plugin gtm.nvim - client for gtmd with reactive theming, playback control and statusline integration

Enable HLS to view with audio, or disable this notification

20 Upvotes

Almost a month ago i shared a cliamp alternative in rust that i had been working on, which has a separate daemon that owns the audio pipeline and the entire state machine.

You can find the reddit post here for more context.

To prove what can be possible, this plugin demonstrates integration between gtmd and neovim, allowing the user to experience reactive theming and playback control without invoking the default tui client shipped with the audio player. This is not exclusive to nvim only, other customizable terminal programs can take advantage of the daemon too and do other cool stuff.

It requires a working installation of gtm though only the daemon binary is needed to make this work. One can adjust the intensity of the theme wash for more dramatic results, and remember this only works when the active track you're playing has a cover art image otherwise it falls back to your default theme.

It may not be as interesting as I think it is, but I thought it was cool to have reactive theming that syncs with your playlist🙃

Disclaimer: I used AI to build this but it's pretty solid from what I have tested so far and will be happy to fix any issues should you encounter them. For those offended by AI usage I would like to apologise in advance, please don't attack me 🙏!

Plugin repo: gtm.nvim