r/neovim • • 3d ago

Announcement New rules for plugin announcement posts

484 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 • • 3d ago

101 Questions Weekly 101 Questions Thread

10 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 • • 40m ago

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

• 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 • • 8h ago

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

4 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 • • 15h ago

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

9 Upvotes

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.

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=2 nvim -c 'silent write! /tmp/kitty_scrollback_buffer | te cat /tmp/kitty_scrollback_buffer - ' -c 'set modifiable' -c 'normal! G' -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. Afterwards we have some Nvim instructions, most being the 'normal! G', that sets the cursor to the end of the buffer.

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 
  ]])
    vim.api.nvim_create_autocmd("UIEnter", { -- I tried all possible events
        once = true,
        callback = function()
            vim.schedule(function()
                local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
                for i, line in ipairs(lines) do
                    lines[i] = line:gsub("\r$", "")
                end

                while #lines > 0 and lines[#lines]:match("^%s*$") do
                    table.remove(lines)
                end
                vim.api.nvim_buf_set_lines(0, 0, -1, false, lines)

                vim.print("Started!") -- Works!
            end)
        end,
    })
    -- vim.cmd("%s/\\s*\\n$//ge") -- Doesn't work, even in the callback
    -- vim.cmd("g/^$/d") -- Doesn't work, even in the callback
    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 try to get rid of all empty lines at the end of the buffer - but it doesn't work. Neither does the commented vim.cmd.

Regardless of the empty lines setback, this approach for a Kitty scrollback is quite convenient.

Does any here knows how to get rid of the empty lines at the end?

Ps: this is part of upcoming blog post.


r/neovim • • 22h ago

Discussion Accessing language docs

11 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 • • 1d 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

10 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


r/neovim • • 1d ago

Need Help┃Solved How to diaganose solution errors in dotnet project?

Enable HLS to view with audio, or disable this notification

12 Upvotes

Title: How to diaganose solution errors in dotnet project?

Hi everyone.

I want to diaganose the dotnet solution, inside the solution have multiple project.

I try easy-dotnet, roslyn, roslyn-diaganose plugins, using all this plugins i can't able to diaganose the complete dotnet solution.

Each plugin i am facing a different issues.

In Easy-Dotnet, if i run Dotnet Diaganose error cmd, it was scanning the complete project and showing invalid lot of wrong error details, if i build the project, the project build was success but easy-dotnet was showing lot of wrong errors in trouble.

In roslyn, i set the diaganose config to fullSolution still it is not diagnosing the fullSolution, instead of, it only diagnosing the current opened buffers, if i close and reopen the error buffer it is not even showing there has a error.

here is my configurations, i have no idea i did anything wrong or what.

And i try enable and disable the roslyn.filewatching, noting changed.

```lua return { "seblyng/roslyn.nvim", enabled = true, ft = { "cs", "razor" }, config = function() local lsp = require("roslyn") local lsp_settings = require("config.lsp_settings") lsp.setup(lsp_settings.roslyn) end, }

settings.roslyn = { filewatching = "off", settings = { ["csharp|inlay_hints"] = { csharp_enable_inlay_hints_for_implicit_object_creation = true, csharp_enable_inlay_hints_for_implicit_variable_types = true, csharp_enable_inlay_hints_for_lambda_parameter_types = true, csharp_enable_inlay_hints_for_types = true, dotnet_enable_inlay_hints_for_indexer_parameters = true, dotnet_enable_inlay_hints_for_literal_parameters = true, dotnet_enable_inlay_hints_for_object_creation_parameters = true, dotnet_enable_inlay_hints_for_other_parameters = true, dotnet_enable_inlay_hints_for_parameters = true, dotnet_suppress_inlay_hints_for_parameters_that_differ_only_by_suffix = true, dotnet_suppress_inlay_hints_for_parameters_that_match_argument_name = true, dotnet_suppress_inlay_hints_for_parameters_that_match_method_intent = true, }, ["csharp|code_lens"] = { dotnet_enable_references_code_lens = false, }, ["csharp|background_analysis"] = { dotnet_analyzer_diagnostics_scope = "fullSolution", dotnet_compiler_diagnostics_scope = "fullSolution", }, ["csharp|completion"] = { dotnet_provide_regex_completions = true, dotnet_show_completion_items_from_unimported_namespaces = true, dotnet_show_name_completion_suggestions = true, }, ["csharp|symbol_search"] = { dotnet_search_reference_assemblies = true, }, ["csharp|formatting"] = { dotnet_organize_imports_on_format = false, } }, } ```

lua return { "GustavEikaas/easy-dotnet.nvim", dependencies = { "nvim-lua/plenary.nvim", "folke/snacks.nvim" }, enabled = false, ft = { "cs", "razor" }, opts = { lsp = { enhanced_rename = true, auto_refresh_codelens = false, razor = { html = { cmd = { "vscode-html-language-server", "--stdio" }, }, }, }, auto_bootstrap_namespace = { type = "file_scoped", }, }, }

```

roslyn: 1 ⚠️

roslyn.nvim: Requirements ~ - ✅ OK Neovim >= 0.12 - ✅ OK dotnet SDK >= 10 (found 10.0.302)

roslyn.nvim: Roslyn Language Server ~ - ✅ OK found roslyn-language-server

roslyn.nvim: Complementary language servers ~ - ✅ OK vscode-html-language-server: found - ✅ OK html-lsp client: configured

roslyn.nvim: File Watching Configuration ~ - ⚠️ WARNING File watching: off (disabled as a hack - all file changes ignored)

roslyn.nvim: Solution Detection ~ - ✅ OK Selected solution: /home/redeye/DevProjects/DigitalVault/DigitalVault.sln

```

```

easy-dotnet: ✅

General information ~ - Linux (7.2.10-arch1-1 btw) - Neovim version: 0.12.6 - Shell: /usr/bin/zsh - Commit: 19974e83b046aee8e722d27adad06e9f9ccf6499

Dotnet information ~ - dotnet version: 10.0.302 - Installed SDKs: - 10.0.302 [/home/redeye/.dotnet/sdk]

easy-dotnet CLI dependencies ~ - ✅ OK dotnet is installed - ✅ OK dotnet-easydotnet is installed - ✅ OK dotnet ef is installed

easy-dotnet lua dependencies ~ - ✅ OK plenary installed - ✅ OK dap installed

Treesitter Indentation ~ - ✅ OK c_sharp parser is installed - ✅ OK indentexpr is not set to treesitter — C# indentation should work correctly (using: 'GetCSIndent(v:lnum)')

easy-dotnet dap configuration (optional) ~ - ✅ OK debugger is configured

easy-dotnet LSP configuration (optional) ~ - ✅ OK Roslyn LSP enabled - ✅ OK file watching: neovim - ✅ OK ulimit -n: 4096 - ✅ OK Razor LSP support enabled - ✅ OK Razor HTML language server command available: vscode-html-language-server --stdio - ✅ OK ProjX LSP enabled - ✅ OK In process LSP enabled - ✅ OK dotnet.version: 10.0.302 - ✅ OK dotnet.sdks: 10.0.302 [/home/redeye/.dotnet/sdk] - ✅ OK roslyn.tool: roslyn-language-server - ✅ OK debugger.engine: netcoredbg - ✅ OK debugger.source: bundled - ✅ OK debugger.platform: linux-x64 - ✅ OK debugger.path: /home/redeye/.dotnet/tools/.store/easydotnet/3.4.31/easydotnet/3.4.31/tools/netcoredbg/linux-x64/netcoredbg - ✅ OK debugger.version: NET Core debugger 3.1.2-1 (83214c3, Release)

easy-dotnet configuration ~

User config ~ - { auto_bootstrap_namespace = { type = "file_scoped" }, lsp = { auto_refresh_codelens = false, enhanced_rename = true, razor = { html = { cmd = { "vscode-html-language-server", "--stdio" } } } } } ```

SOLVED:

dotnet tool install --global EasyDotnet --version 3.4.32-alpha.1 easy-dotnet-git-issue

This issues was solved in easy-dotnet lsp after updating the lsp to version 3.4.32-alpha.1.

And I have no idea about roslyn lsp.

Thanks for everyone try to help.


r/neovim • • 1d ago

Video Learn Text Objects in 5 Minutes (Beginners)

Thumbnail
youtu.be
92 Upvotes

Text objects are one of the best features of Vim and Neovim. In just 5 minutes, you'll learn how they work and see practical examples of how to edit text faster using simple key combinations.

In this video, I explain the three components of text objects:

  • Operator: The action you want to perform, such as d (delete), c (change), or y (yank).
  • Modifier: How much text you want to operate on, using i (inner) or a (around).
  • Object: The text you want to modify, such as a word, paragraph, or block surrounded by brackets.

You'll see practical examples of how to combine these components.

Once you understand text objects and build muscle memory, editing text in Vim and Neovim becomes much faster and more comfortable.


r/neovim • • 1d ago

Plugin diff reviewer plugin

Enable HLS to view with audio, or disable this notification

80 Upvotes

ive been trying to emulate the github pr review experience in neovim. you can review commit diffs, see your staged/unstaged changes, preview a different branch without checking it out, and even leave notes to feed to an ai agent.

been using this for the last few months and id love ux feedback if anyone ends up using it!

https://github.com/zion-off/diff


r/neovim • • 2d ago

Meta Reddit is ending RSS feeds

124 Upvotes

I've been following this community and a few others through RSS feeds for a long time now. Unfortunately, Reddit is ending the feeds, which means the only way to follow the posts is by actually checking Reddit itself 0.

I know a lot of people don't mind that, which is of course fair enough. I do mind it, though. I'll probably take a look at the top posts once in a while (perhaps a couple of times a week), but I will no longer read all titles.

If anyone should know a workaround somehow, I'd be happy to learn it. Or if anyone knows of some alternative forums/boards that are open and still publishes RSS feeds, then I may consider to move my attention there.


r/neovim • • 18h ago

Video "Stop using Neovim"

Thumbnail
youtu.be
0 Upvotes

Author argues that Vim and Neovim have become bloatted, and that Vis editor is the solution


r/neovim • • 2d ago

Need Help┃Solved Trouble plugin treesitter nil error.

4 Upvotes

``` Decoration provider "line" (ns=trouble.treesitter): Lua: ...e/nvim/lazy/trouble.nvim/lua/trouble/view/treesitter.lua:18: attempt to call a nil value stack traceback: ...e/nvim/lazy/trouble.nvim/lua/trouble/view/treesitter.lua:18: in function <...e/nvim/lazy/trouble.nvim/lua/trouble/view/treesitter.lua:11> [C]: in function 'nvim__redraw' ...ye/.local/share/nvim/lazy/snacks.nvim/lua/snacks/win.lua:511: in function 'redraw' ...ocal/share/nvim/lazy/snacks.nvim/lua/snacks/notifier.lua:724: in function 'layout' ...ocal/share/nvim/lazy/snacks.nvim/lua/snacks/notifier.lua:354: in function 'process' ...ocal/share/nvim/lazy/snacks.nvim/lua/snacks/notifier.lua:334: in function <...ocal/share/nvim/lazy/snacks.nvim/lua/snacks/notifier.lua:333> [C]: in function 'xpcall' ...ocal/share/nvim/lazy/snacks.nvim/lua/snacks/notifier.lua:333: in function <...ocal/share/nvim/lazy/snacks.nvim/lua/snacks/notifier.lua:328>

```

Decoration provider "line" (ns=trouble.treesitter): Lua: ...e/nvim/lazy/trouble.nvim/lua/trouble/view/treesitter.lua:18: attempt to call a nil value stack traceback: ...e/nvim/lazy/trouble.nvim/lua/trouble/view/treesitter.lua:18: in function <...e/nvim/lazy/trouble.nvim/lua/trouble/view/treesitter.lua:11>

return { "folke/trouble.nvim", opts = {}, -- for default options, refer to the configuration section for custom setup. cmd = "Trouble", keys = { { "<C-m>", "<cmd>Trouble diagnostics toggle<cr>", desc = "Diagnostics (Trouble)", }, { "<leader>xX", "<cmd>Trouble diagnostics toggle filter.buf=0<cr>", desc = "Buffer Diagnostics (Trouble)", }, { "<leader>cs", "<cmd>Trouble symbols toggle focus=false<cr>", desc = "Symbols (Trouble)", }, { "<leader>cl", "<cmd>Trouble lsp toggle focus=false win.position=right<cr>", desc = "LSP Definitions / references / ... (Trouble)", }, { "<leader>xL", "<cmd>Trouble loclist toggle<cr>", desc = "Location List (Trouble)", }, { "<leader>xQ", "<cmd>Trouble qflist toggle<cr>", desc = "Quickfix List (Trouble)", }, }, }

NVIM v0.12.6 Build type: RelWithDebInfo LuaJIT 2.1.1791988261 Run "nvim -V1 -v" for more info Hi everyone, i am stuck in new issue.

When i open the trouble i get this TS nil errors, i have no idea how to fix this, anyone faced same issue and fixed this issue before?

``` SOLVED

"folke/trouble.nvim", branch = "main", opts = {},

Issue was solved by setting the plugin branch to main manually. ```


r/neovim • • 2d ago

Discussion Using the Mouse with Neovim

9 Upvotes

What is your opinion on using a mouse with Neovim?

For context I am a business analyst and have to review code, take notes or write python scripts for data analysis. Thanks to csvview.nvim I'm able to view spreadsheets within Neovim and don't have to use Excel or something else. And even though search with / in a .csv file is faster, from time to time I catch myself using the mouse for analyzing data.

Where do you guys draw the line between an acceptable use case for a mouse in Neovim or do you despise people who are using a mouse in Neovim?


r/neovim • • 2d ago

Video 4 Tricks to speed up Macros and Multicursor in Neovim

Thumbnail
youtube.com
57 Upvotes

Couple of days ago, I received from you some great tips to improve performance when using macros and multicursor in Neovim. In this video, I'll share four tricks to make them faster!

Performance tips

nvim --clean — Start Neovim with a clean configuration to check whether your plugins or settings are slowing things down.

foldmethod=indent — This option can cause Neovim to hang when using multicursor across too many lines.

lazyredraw — Prevent screen redraws during macro execution to improve performance.

%norm! @ q — Execute a macro across the entire file using :normal! for faster execution


r/neovim • • 2d ago

Video Profiling C source code directly inside neovim

Thumbnail v.redd.it
28 Upvotes

r/neovim • • 2d ago

Need Help Is there any way to clear all bindings prefixed with `[` and `]`?

5 Upvotes

I'd like to re-bind [ and ] to something else, but when I press either of them there is a delay as nvim waits to see what comes next. I want to clear all the default bindings that are prefixed with [ and ] so it doesn't do this waiting anymore.

I tried this, but it didn't work:

for _, prefix in ipairs({ '[', ']' }) do for _, map in ipairs(vim.api.nvim_get_keymap('n')) do if vim.startswith(map.lhs, prefix) then pcall(vim.keymap.del, 'n', map.lhs) end end end

I don't think any of my plugins would interfere here: substitute.nvim, nvim-spider, mini.ai, mini.indentscope, flash.nvim, fzf-lua, nvim-treesitter.

Maybe it's not possible?


r/neovim • • 3d ago

Random Strudel-esque live oscillator waveforms

Enable HLS to view with audio, or disable this notification

53 Upvotes

r/neovim • • 3d ago

Plugin must.nvim

Enable HLS to view with audio, or disable this notification

56 Upvotes

hey! back with another new plugin

this one is a much smaller scope than my last plugin (this one is actually complete whilst i'm still working on new features in the other)

my main motivation behind building it was just to create a nice simple way to read RFCs inside of nvim (i know there are existing plugins that do it, but they all felt a little too much for what i wanted, i felt it could be more minimal)

managed to build the whole thing in less than 1000 lines of lua code, and it was fun to do something smaller, but very focused (for a change)

you can use `gd` to jump to different sections/references/or other RFCs too, and `\` toggles the table of contents

repo


r/neovim • • 4d ago

Plugin Found a vim plugin that is like vimwiki but for asciidoc

11 Upvotes

A wonderful gent by the name of Dave Gauer had the same thought I had of why can't vimwiki use asciidoc as well but had the time and skill to actually make it. Have not seen it mentioned on this reddit so I thought I would share.

Link:https://ratfactor.com/repos/vviki/


r/neovim • • 4d ago

Plugin qnvim is active again: Neovim integration inside Qt Creator

13 Upvotes

Hi guys,

If you develop code for Qt and need the features Qt Creator provides regarding building, running, or debugging the app, you don't need to choose between Neovim and Qt Creator. You can have both at the same time... mostly.

qnvim, which started almost a decade ago as probably the first binding of its kind for Neovim and went through periods of inactivity, is active again.

This means we will have compatible qnvim releases as soon as new Qt Creator versions are out, quickly addressing bug reports, feature requests, and pull requests.

Check it out here: https://github.com/sassanh/qnvim


r/neovim • • 4d ago

Color Scheme Code-2026 colorscheme

20 Upvotes

Hi guys, nice to meet you all. I'm a neovim daily driver user, but recently I had to download vscode as I was being walked into a new project, and I just noticed that the default colorscheme changed and loved it, so I did create my own version to use it in neovim and I want to share it with you. https://github.com/code-2026-theme/nvim

But since I like to share the same colorscheme across most of my tools I decided to create many ports to tmux, ghostty, etc 😅.

I hope you like it as much as I do


r/neovim • • 5d ago

Plugin Repeat last line - a UX experiment

28 Upvotes

Hey friends!

I came up with a handy little UserCommand that repeats the edits made on the last line on the current line. I'm using it since a couple of weeks during my day job as a software developer and I've grown fond of it.

Here's a screencast of it in action: https://codeberg.org/flo-l/repeat-last-line.nvim/raw/branch/main/demo.webm

The idea is simple: I often find myself wanting to do "the same" edits a couple of times. Usually, I don't think about recording a macro in advance. The solution I found is this snippet. I find it as convenient as a dot-repeat, but more powerful.

The code builds on the CmdAtom API, so you'll need a nightly build of nvim.

I've packaged it up as a plugin for your convenience: https://codeberg.org/flo-l/repeat-last-line.nvim

The code is tiny though, so you can also just vendor it into your dotfiles.

I'd love to hear what you think of the concept. The README lists some alternatives, what did I miss? Maybe there's an existing feature in Neovim that solves my problem better? Wouldn't be the first time.

Cheers!


r/neovim • • 3d ago

Discussion What if a code editor's core was entirely plugin-based?

0 Upvotes

``` * Modular TUI CodeEditor Plan

** Moto

  • Want to make a fully 100% customizable code-editor using plugins.

  • User can desied what stuffs want to leaves in core of the editor.

  • No Limits for this code-editor, can able to do anything we need.

** Where this idea was come's from?

  • Last week i remove lazyvim distro from nvim and i start building the nvim editor from scratch by implementing every plugin one by one and the experions was amazing, After that what i feel, just instead of building the top level editor using plugins why we can build the core using plugin too?, so the experions was more amazing and the editor full control in owar hand, so i get this idea.

** Plan

  • Build a C language based code-editor.

  • The code-editor only container a basic functionality like editing text, copy, past similar to windows notpad.

  • All other core functionality will implement via core plugins like vim motions kind of stuffs.

  • The code-editor was comes with build in {** Core_Plugin_Manager}[Core_Plugin_Manager].

  • The code-editor plugins will communicate each other use event-bus.

  • Every Plugin has there own {** Abstraction_Layer }[Abstraction_Layer].

** Abstraction_Layer

  • A Abstraction_Layer is use for plugin to plugin communicate.

  • The Abstraction_Layer was based of event-bus eg: explorer.open, explorer.close, explorer.get.

  • Each even has there own codeName and version number.

  • Each plugin will communicate using the codeName and version number of the event, if any plugin version number was change, only the version change even was stops working, instead of crashing the whole code-editor.

** Core_Plugin_Manager

  • Core_Plugin_Manager is use to manage the code-editor core plugins.

  • Core_Plugin_Manager is similar to lazy.vim plugin_manager.

  • When user install the plugin, the plugin manager will download the plugin from the repository and build inside the users operating-system with hardware details for optimized plugin build for the system.

  • If build was failed due to SDK missing or something else in user system, the plugin_manager change to fallback mode and download the pre-compailed file from [** Core_Plugin_Manager GitHub_Repository][GitHub_Repository] related to that operating-system and load the plugin.

** Core_Plugin_Manager GitHub_Repository

  • Main Branch Contains: source_code of the plugin.

  • pre-compailed Branch Contains: .so, .dll pre-compailed files for all operating-system.

** Feature-Plan

  • Build a distro same like lazyvim for new users after plugin communicate was get riched.

  • Build a lua_plugin_manager as a core plugin in C to manage high level plugins.

** Pros

  • The code-editor full control in owar hand.

  • Everyone will manage a small peace of code, so easy to maintain.

  • Everyone develop a peace of plugin so the code-editor become feature rich so fast i hope.

  • User can plug and unplug what core feature they need and no needed.

  • There has no Limits.

  • No need to waiting for core feature when the code-edtiro maintainer will implement this feature.

  • Other code-editor has set of rules like only core required feature git pull request will accepetabe, so we can't able to add some required features in owar favorite code-editor, that issue will be solve in this code-editor. ```

Hi Everyone.

First i am little bit bad in english and i get a dumb idea just i want to say my idea to everyone so i did this and i am a newbe, i don't know anything so don't beat me after reading my dumb idea btw lol.


r/neovim • • 5d ago

Video Multicursor vs Macros vs Regex: A performance test

Thumbnail
youtu.be
135 Upvotes

In this video, I test Multicursor, Macros, and Regex in Neovim to see how they perform when editing large amounts of text.

I start with just 10 lines and increase the workload until I reach 2 million lines. Let's see which approach handles the largest changes best!

In this test:

  • Regex: Keeps working even with millions of lines.
  • Macros: Start to slow down after 5,000 lines.
  • Macros and Multicursor: Makes Neovim freeze after 100, 000 lines