Neovim

19 readers
1 users here now

Neovim is an hyperextensible Vim-based text editor. Learn more at neovim.io.

founded 2 years ago
MODERATORS
26
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/NoYam4683 on 2025-06-14 08:45:40+00:00.


Hi everyone! I’m excited to share my first Neovim plugin: gitstatus.nvim. It’s an interactive Git status window where you can stage/unstage files and create commits.

Why did I create it?

As someone who usually prefers the Git CLI, I constantly found myself repeating: 1. git status → 2. git add → 3. git commit, and I wanted a quicker and more convenient way to do it without leaving Neovim.

https://preview.redd.it/lbqmxdrhvu6f1.png?width=1920&format=png&auto=webp&s=f3984e43b608d818237799497109422ffd1e4183

27
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/adibfhanna on 2025-06-14 20:18:46+00:00.


Let me know what you think!

28
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/sd5seandewar on 2025-06-14 13:07:58+00:00.


Ever wanted to play DOOM in Neovim? No? Wrong answer: https://github.com/seandewar/actually-doom.nvim

Requires Nvim v0.11+ and only supports Linux. Maybe I'll consider other platforms later, but I'm currently bored of working on what is essentially a shitpost.

Best experienced in a terminal that supports the kitty graphics protocol. If you're using the latest pre-release of Nvim (v0.12-dev after de87ceb), support should be automatically detected.

Be sure to read the docs; have fun!

29
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/s1n7ax on 2025-06-13 17:07:26+00:00.


  • Install native-preview npm install --global @typescript/native-preview
  • Make sure tsgo is in your PATH by running tsgo --version (result should be something like Version 7.0.0-dev.20250613.1)
  • Open up your neovim config and add tsgo.lua file. (On linux, the path is ~/.config/nvim/lsp/tsgo.lua)
  • Add the following code to your tsgo.lua file:

lua ---@type vim.lsp.Config return { cmd = { 'tsgo', '--lsp', '--stdio' }, filetypes = { 'javascript', 'javascriptreact', 'javascript.jsx', 'typescript', 'typescriptreact', 'typescript.tsx', }, root_markers = { 'tsconfig.json', 'jsconfig.json', 'package.json', '.git', 'tsconfig.base.json', }, }

  • Enable the LSP in your init.lua file by adding vim.lsp.enable('tsgo')

What to expect:

  • Most of the important features are working such as auto-completion, diagnostics, goto-definition etc.
  • Some of the actions are not working like goto-implementation
  • Sometimes the server is crashing
  • Some type errors started appearing which I don't get in vtsls or at the project build.

Is it fast?

  • Difference is definitly noticeable. Auto-completion feels good. Diagnostics are updated faster I would switch 100% if tsgo was stable but it's unusable for any real work from my experience.
30
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/CptCorndog on 2025-06-13 20:25:43+00:00.

31
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/Afonsofrancof on 2025-06-13 20:10:30+00:00.


Neovim, in recent versions (0.11.0+), gained the ability to automatically detect when your terminal's theme changes. It does this by querying the terminal with an OSC sequence, and the terminal replies with an OSC 11 sequence containing its current background color. Neovim then uses this information to update its internal background option.

However, sometimes you want to do more than just change vim.opt.background. Maybe you want to switch to a completely different colorscheme, or adjust your statusline, or trigger any other custom logic. That's where OSC11.nvim comes in.

My plugin listens for the same OSC 11 responses that Neovim processes internally. It uses the exact same method Neovim uses to determine if the background is light or dark. The difference is that instead of just setting vim.opt.background, OSC11.nvim lets you define custom Lua functions to run when a light or dark theme is detected.

Currently I use this with tmux and Ghostty. Ghostty changes between two themes automatically with the system theme, and sends those OSC sequences which are captured by neovim to change its theme as well.

32
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/CerealBit on 2025-06-13 06:57:04+00:00.


Telescope, fzf-lua, snacks-picker, mini.pick, etc.

I used Telescope for a few years and I really like it, but I noticed that it gets slow on big projects. I would be interested to hear which picker you use and why you prefer one over the others.

33
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/neoneo451 on 2025-06-13 09:30:18+00:00.


In the spirit of:

What other good practices are there? No need to be the "best", just what you prefer and works for you.

I will start with a refactor I was doing on obsisdian.nvim yesterday, where I split the huge util.lua file into three modules:

  • util.lua has all the "pure" functions
  • api.lua has all the impure functions that interacts with the editor state
  • builtin.lua has all the functions that are the default behavior but also are user-definable

So I think once you have a plugin that has significant size, it is neccessary to not throw every simple helper into a util file, and don't care about their organization.

Neovim itself is also having a problem of a huge lsp.util file The culling of vim.lsp.util.

Also, if a helper is only used once, you might as well inline it, so that logic is more apprent at the call site.

This is also good for testing as well, also mini.test rules :)

Just a small thing I want to share, what more do you have?

34
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/TibFromParis on 2025-06-12 17:52:17+00:00.


Hey folks! 👋

I've been working on package-ui.nvim, a floating window interface that makes managing dependencies like NPM, Cargo a breeze directly from Neovim.

🎯 What This Solves:

Every language has its own package manager with different commands and workflows. This plugin provides a single, consistent interface for all of them.

Repo : https://github.com/MonsieurTib/package-ui.nvim

🚀 Core Functionality:

The plugin provides a unified interface with five main components:

  • Search - Find packages across registries in real-time
  • Installed - View currently installed packages with update indicators
  • Available - Browse search results and available packages
  • Versions - Explore different versions of selected packages
  • Details - Comprehensive package information including dependencies, licenses, and descriptions

📦 Currently Supported Package Managers:

NPM:

  • Automatically detects package.json files in your project
  • Integrates with npmjs.com registry for package search and details
  • Shows outdated packages with available updates
  • One-click install/uninstall with automatic package.json updates

Cargo:

  • Automatically detects Cargo.toml files in your project
  • Integrates with crates.io registry for comprehensive crate information

🔮 Roadmap : More Package Managers Coming

The architecture is specifically designed to easily add new package managers.

Here's what's planned:

  • Python pip
  • Go modules
  • Ruby gems

📋 Universal Workflow (Works for All Package Managers):

  1. :PackageUI - Opens the interface, auto-detects your project type
  2. Type to search packages from the appropriate registry
  3. Navigate with j/k, Tab between components
  4. Press Enter to browse available versions
  5. Press 'i' to install your chosen version
  6. Press 'u' on installed packages to uninstall
  7. View real-time dependency info and update notifications

⚙️ Installation (lazy.nvim):

{
  "MonsieurTib/package-ui.nvim",
  config = function()
    require("package-ui").setup()
  end,
}

🤝 Community Input Needed:

Which package manager should I prioritize next? What features would make your multi-language development workflow smoother? The codebase is designed to be community-driven and extensible.

35
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/yutkat on 2025-06-13 00:51:23+00:00.

36
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/Lavinraj on 2025-06-12 14:55:17+00:00.

37
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/mplusp on 2025-06-12 12:19:49+00:00.


I made another short video in my "Vim Tips & Tricks" series. Really having fun making these. Hope you like it!

38
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/Substantial_Tea_6549 on 2025-06-12 12:12:51+00:00.


https://www.youtube.com/watch?v=UjWrhW19PtQ

39
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/Moshem1 on 2025-06-12 12:24:58+00:00.


i know there are some lua alternative but go figure writing the complex vim regex going on in the config to achieve that.

https://i.redd.it/3ffqzdfmph6f1.gif

Plugin:

https://github.com/AndrewRadev/switch.vim

My config (with lazy.nvim):

https://github.com/mosheavni/dotfiles/blob/cbd0bb67779db07ec385a2854329631163028a8b/nvim/.config/nvim/lua/plugins/init.lua#L43-L112

40
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/iamkarasik on 2025-06-12 02:40:30+00:00.


Hi all,

I'm excited to share a new plugin I've been working on: sonarqube.nvim — a Neovim integration for SonarQube’s language server (SonarLint).

📦 GitHub: iamkarasik/sonarqube.nvim

sonarqube/sonarlint diagnostic warnings

🔧 Features:

  • View SonarQube issues directly in Neovim
  • LSP code-actions to apply fixes when available
  • Easy to set up

I’d love to hear your thoughts - and contributions are definitely welcome!

Thanks for checking it out ✌️

41
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/lostAnarchist1984 on 2025-06-11 10:44:19+00:00.


I used to use indent-blankline for some time but I found out that the listchars options was good enough for me (the string for tab and leadmultispace is U+258F followed by a space).

vim.opt.listchars = {
  tab = "▏ ",
  extends = "»",
  precedes = "«",
  leadmultispace = "▏ "
}

The downside of using listchars is that empty lines will break the indent guide. Again, this is not a huge deal for me.

However, I didn't like that in programming languages where the indent size != 2, this would display the wrong number of indent guides, which looks really bad. Today I decided to try and fix it and I came up with this:

-- Set listchars
vim.api.nvim_create_autocmd("BufWinEnter", {
  callback = function()
    sw = vim.fn.shiftwidth()
    vim.opt.listchars = vim.tbl_deep_extend(
      "force",
      vim.opt_local.listchars:get(),
      {
        tab = '▏' .. (' '):rep(sw - 1),
        leadmultispace = '▏' .. (' '):rep(sw - 1)
      }
    )
  end
})

You may have to change the event BufWinEnter depending on when your shiftwidth gets set in your config. For me this happens with my .editorconfig file, so quite late. I'm quite satisfied with this. Let me know if you find this useful or can think of a way to improve the code.

42
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/waizui on 2025-06-11 13:56:53+00:00.

43
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/siduck13 on 2025-06-11 08:23:07+00:00.

44
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/Kurren123 on 2025-06-10 17:33:59+00:00.


Hi all

Just wanted to share some exciting updates for mssql.nvim, my first plugin! It lets you write and execute SQL Server queries in Neovim. These updates include:

  • Save query results to Json, Excel, Csv or XML files
  • User commands added for everything using MSSQL <command>. Autocomplete only shows what is possible to execute at the time, eg MSSQL Connect won't show if you're already connected
  • Backup and restore from .bak files - select the .bak file and an SQL query will be generated to backup to/restore from it
  • Basic auto formatting
  • Simplified set up for people that want keymaps created for them
  • Better support for other status lines, eg Heirline used in AstroVim
  • Show LSP hover info on columns/variables/other objects using Ctrl+K
  • "Execute on default" - executing a query when not connected will look for a connection called "default", open it and execute, saving you a few keystrokes
  • Bugfixes

If you use SQL server, please do give it a try!

45
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/Hashi856 on 2025-06-09 23:08:51+00:00.


I can touch type. I'm not the fastest in the west, but my average is around 70wmp. But I've always stuggled with the number keys. Most of them are just too far away from where my fingers rest. I can hit a few pretty easily, but 5, 6, and 7 are particularly hard. I've thrown months of practice at it, and I just can't him them consistantly. I either press the wrong key or I press more than one at the same time.

Anyway, relative number jumbing has always been a struggle for me, to the extent that I dont' really do it. Has anyone else had this issue? How did you get around it?

46
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/siduck13 on 2025-06-10 09:20:17+00:00.

47
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/joetifa2003 on 2025-06-10 04:37:56+00:00.

48
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/Heide9095 on 2025-06-09 14:47:51+00:00.


Hi, I've never before used anything similar to the vim-motions or relied to shortcut heavy usage, and I am still learning. But a recent anectode inspired me to share my experience and thoughts as a newcomer bout the process of switching to-, learning about- and dealing with the post-nvim-syndrome.

Why I picked up nvim

I picked up nvim for self-study C programming purposes, in which I am still a beginner. I liked the look of a simplistic interface and I saw some good comments about how with time the workflow ultimately becomes intuitive and efficient even though the learning curve can be difficult for some. Since I had no significant experiences that would be in the way, and I was not under any pressure - I thought: "why not".

Getting started and my first impressions

To be frank, I was completely lost. The interface was foreign, the terminology was alien, and there was a complete overflow of information that in retrospect was excessive and unrelated for a beginner wanting to learn how to setup and use nvim.

I often questioned if I really need all those plugins and customization to simply learn how to use the editor. It was a massive headache, really, and I did not get the positivity behind nvim as I could not even get started with something basic without being recommended an excessive list of plugins and processes that are beyond me.

I was not able to use the editor for coding as I was just confused in that regard for the first few days. But on the positive side I quickly found my way to :Tutor and :help, so I did start to get familiar with vim-motions early on.

Learning and using nvim

This section is a small advice for other newcomers aswell***.***

Finally after days of banging my head against a wall - I grew a skull thick enough to make a break-through. I asked simple questions and searched for simple short answers, and I researched every bit of terminology that I do not understand. And I finally felt some progress in learning about how to use vim.

Mainly two realizations helped alot:

  1. You can do almost anything in 'vanilla' nvim text-editing wise. If you got an idea for how you would like to edit your text en masse, or one specific part - there exists most likely a vim-motion combo for that. However if it does not exist nativly you can add that relativly easily yourself - and you should optimise as you go.
  2. You don't have to exit vim. Use the terminal to navigate your machine. Put your mouse aside - and use your keyboard. Setup and do everything you can through keybindings, hotkeys, shortcuts etc. to navigate in your machine. The workflow becomes so intuitive and seemless that time flies.

In genera,l my rule of thumb was and still is to learn to use vim's native features and gradually implement them one at a time in my workflow. If I have a necessity I check if wim supports it nativly, or if I can add it myself without hassle.

Post-nvim-syndrome

Two weeks of daily use is not a lot - but it is enaugh.

Recently I was doing some writing on a foreign laptop on another app - a list of materials and price calculations. A few minutes into the process I grew frustrated, I noticed it and laughed to myself. I was subconsciously trying to navigate the app using vim-motions, needless to say it id not work, and everytime the app did not respond and I had to use 'other less optimal methods' I was thinking: "yeah...I get it now. nvim is cool."

Conclusion

In short, a hassle to get started expecially if you have 0 idea about what you are doing. You don't just learn vim, you have to learn things around vim aswell, but once you get beyond the starting point - it grows on you.

49
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/JonkeroTV on 2025-06-09 16:05:52+00:00.


A tutorial for those looking to make their own color schemes. I hope to see many new ones!

50
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/neovim by /u/Hashi856 on 2025-06-08 23:57:04+00:00.


Edit: well I feel kind of dumb. I didn’t realize this was a vim-neovim difference

I believe the default for neovim is to have a fat cursor in non-insert modes and a skinny one for insert. I see some people that keep the fat cursor all the time. I'm not sure if this is soley a personal preference thing (maybe that's what their first editor used and they're just used to it) or if there are good reasons and trade-offs for chosing one over the other.

What do you use and why?

view more: ‹ prev next ›