<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: glmlm</title>
    <description>The latest articles on DEV Community by glmlm (@glmlm).</description>
    <link>https://dev.to/glmlm</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3258168%2F48d6471c-b8a2-4ae6-8577-941126ae3ced.png</url>
      <title>DEV Community: glmlm</title>
      <link>https://dev.to/glmlm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/glmlm"/>
    <language>en</language>
    <item>
      <title>SnaxVim is an IDE, NOT a Minimal Template</title>
      <dc:creator>glmlm</dc:creator>
      <pubDate>Sat, 26 Sep 2026 09:00:00 +0000</pubDate>
      <link>https://dev.to/glmlm/snaxvim-is-an-ide-not-a-minimal-template-596c</link>
      <guid>https://dev.to/glmlm/snaxvim-is-an-ide-not-a-minimal-template-596c</guid>
      <description>&lt;p&gt;I previously introduced &lt;a href="https://dev.to/glmlm/snaxvim-a-minimal-blazingly-fast-neovim-setup-57cf"&gt;SnaxVim, a Neovim distro with only 10 plugins&lt;/a&gt;. However, the small number of plugins combined with &lt;a href="https://dev.to/glmlm/benchmarking-snaxvims-startup-performance-against-popular-neovim-distros-205h"&gt;fast startup performance&lt;/a&gt; can give the impression that SnaxVim sacrifices functionality. In fact, these plugins are carefully selected to cover the essential components of an IDE.&lt;/p&gt;

&lt;p&gt;I'll take a closer look at those plugins in this article and explain the role each one plays. Even after covering all of them, this article shouldn't be particularly long. After all, there are only ten plugins.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Components of an IDE
&lt;/h2&gt;

&lt;p&gt;These plugins provide the essential components for using Neovim as an IDE.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Plugins&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Plugin Manager&lt;/td&gt;
&lt;td&gt;lazy.nvim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Syntax Analysis&lt;/td&gt;
&lt;td&gt;nvim-treesitter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Completion&lt;/td&gt;
&lt;td&gt;blink.cmp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;External Tool Management&lt;/td&gt;
&lt;td&gt;mason.nvim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Language Servers&lt;/td&gt;
&lt;td&gt;nvim-lspconfig&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debugging&lt;/td&gt;
&lt;td&gt;nvim-dap, nvim-dap-view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linting&lt;/td&gt;
&lt;td&gt;nvim-lint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Formatting&lt;/td&gt;
&lt;td&gt;conform.nvim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User Interface&lt;/td&gt;
&lt;td&gt;dashboard-nvim&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  lazy.nvim
&lt;/h3&gt;

&lt;p&gt;A plugin manager used by many Neovim distros.&lt;br&gt;
With the introduction of Neovim's built-in package manager, &lt;code&gt;vim.pack&lt;/code&gt;, in v0.12, SnaxVim is &lt;a href="https://github.com/SnaxVim/SnaxVim/issues/65" rel="noopener noreferrer"&gt;considering migrating away from lazy.nvim&lt;/a&gt; in a future release.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/folke" rel="noopener noreferrer"&gt;
        folke
      &lt;/a&gt; / &lt;a href="https://github.com/folke/lazy.nvim" rel="noopener noreferrer"&gt;
        lazy.nvim
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      💤 A modern plugin manager for Neovim
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;
  &lt;a href="https://lazy.folke.io/installation" rel="nofollow noopener noreferrer"&gt;Install&lt;/a&gt;
  ·
  &lt;a href="https://lazy.folke.io/configuration" rel="nofollow noopener noreferrer"&gt;Configure&lt;/a&gt;
  ·
  &lt;a href="https://lazy.folke.io" rel="nofollow noopener noreferrer"&gt;Docs&lt;/a&gt;
&lt;/h4&gt;
&lt;/div&gt;
&lt;div&gt;&lt;p&gt;
    &lt;a href="https://github.com/folke/lazy.nvim/releases/latest" rel="noopener noreferrer"&gt;
      &lt;img alt="Latest release" src="https://camo.githubusercontent.com/50af5fab97fb7b5e123aa5eab2658dee636b9e288d6c7596a1bd6346ae48aebd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f666f6c6b652f6c617a792e6e76696d3f7374796c653d666f722d7468652d6261646765266c6f676f3d737461727368697026636f6c6f723d433943424646266c6f676f436f6c6f723d443945304545266c6162656c436f6c6f723d33303244343126696e636c7564655f70726572656c6561736526736f72743d73656d766572"&gt;
    &lt;/a&gt;
    &lt;a href="https://github.com/folke/lazy.nvim/pulse" rel="noopener noreferrer"&gt;
      &lt;img alt="Last commit" src="https://camo.githubusercontent.com/4c5160a017ee9d40cf9c6c4f2c5bea7124aeb37bafb1819eabd76d5c7a3d698a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f666f6c6b652f6c617a792e6e76696d3f7374796c653d666f722d7468652d6261646765266c6f676f3d737461727368697026636f6c6f723d386264356361266c6f676f436f6c6f723d443945304545266c6162656c436f6c6f723d333032443431"&gt;
    &lt;/a&gt;
    &lt;a href="https://github.com/folke/lazy.nvim/blob/main/LICENSE" rel="noopener noreferrer"&gt;
      &lt;img alt="License" src="https://camo.githubusercontent.com/cdc6e0b891795132ffa89088b3f94b17847aa3e21f1aafa611b9e95d90f55a78/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f666f6c6b652f6c617a792e6e76696d3f7374796c653d666f722d7468652d6261646765266c6f676f3d737461727368697026636f6c6f723d656539393966266c6f676f436f6c6f723d443945304545266c6162656c436f6c6f723d333032443431"&gt;
    &lt;/a&gt;
    &lt;a href="https://github.com/folke/lazy.nvim/stargazers" rel="noopener noreferrer"&gt;
      &lt;img alt="Stars" src="https://camo.githubusercontent.com/4f5651deff27b31e33d9547fe55ca43be4e8a36d0987109e4a7a3e164b890acb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f666f6c6b652f6c617a792e6e76696d3f7374796c653d666f722d7468652d6261646765266c6f676f3d737461727368697026636f6c6f723d633639666635266c6f676f436f6c6f723d443945304545266c6162656c436f6c6f723d333032443431"&gt;
    &lt;/a&gt;
    &lt;a href="https://github.com/folke/lazy.nvim/issues" rel="noopener noreferrer"&gt;
      &lt;img alt="Issues" src="https://camo.githubusercontent.com/e2e112775080d898eaf9a166d1ac5bf1d3b9b9c338f9a92b05780cb9cab29d36/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f666f6c6b652f6c617a792e6e76696d3f7374796c653d666f722d7468652d6261646765266c6f676f3d62696c6962696c6926636f6c6f723d463545304443266c6f676f436f6c6f723d443945304545266c6162656c436f6c6f723d333032443431"&gt;
    &lt;/a&gt;
    &lt;a href="https://github.com/folke/lazy.nvim" rel="noopener noreferrer"&gt;
      &lt;img alt="Repo Size" src="https://camo.githubusercontent.com/d4b9a31af5d747c1278451448631268ba981b618681f832f6f4d44a8f86fd759/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7265706f2d73697a652f666f6c6b652f6c617a792e6e76696d3f636f6c6f723d253233444442364632266c6162656c3d53495a45266c6f676f3d636f646573616e64626f78267374796c653d666f722d7468652d6261646765266c6f676f436f6c6f723d443945304545266c6162656c436f6c6f723d333032443431"&gt;
    &lt;/a&gt;
    &lt;a href="https://twitter.com/intent/follow?screen_name=folke" rel="nofollow noopener noreferrer"&gt;
      &lt;img alt="follow on Twitter" src="https://camo.githubusercontent.com/77ae4c073d872f6750d3c12268fbdac1795e8e5a89e62f2a2e102fac7115c2aa/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f666f6c6b653f7374796c653d666f722d7468652d6261646765266c6f676f3d7477697474657226636f6c6f723d386161646633266c6f676f436f6c6f723d443945304545266c6162656c436f6c6f723d333032443431"&gt;
    &lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;lazy.nvim&lt;/strong&gt; is a modern plugin manager for Neovim.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F292349%2F208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;📦 Manage all your Neovim plugins with a powerful UI&lt;/li&gt;
&lt;li&gt;🚀 Fast startup times thanks to automatic caching and bytecode compilation of Lua modules&lt;/li&gt;
&lt;li&gt;💾 Partial clones instead of shallow clones&lt;/li&gt;
&lt;li&gt;🔌 Automatic lazy-loading of Lua modules and lazy-loading on events, commands, filetypes, and key mappings&lt;/li&gt;
&lt;li&gt;⏳ Automatically install missing plugins before starting up Neovim, allowing you to start using it right away&lt;/li&gt;
&lt;li&gt;💪 Async execution for improved performance&lt;/li&gt;
&lt;li&gt;🛠️ No need to manually compile plugins&lt;/li&gt;
&lt;li&gt;🧪 Correct sequencing of dependencies&lt;/li&gt;
&lt;li&gt;📁 Configurable in multiple files&lt;/li&gt;
&lt;li&gt;📚 Generates helptags of the headings in &lt;code&gt;README.md&lt;/code&gt; files for plugins that don't have vimdocs&lt;/li&gt;
&lt;li&gt;💻 Dev options and patterns for using local plugins&lt;/li&gt;
&lt;li&gt;📊 Profiling tools to optimize performance&lt;/li&gt;
&lt;li&gt;🔒 Lockfile &lt;code&gt;lazy-lock.json&lt;/code&gt; to keep track of installed plugins&lt;/li&gt;
&lt;li&gt;🔎 Automatically check for updates&lt;/li&gt;
&lt;li&gt;📋 Commit, branch, tag, version…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/folke/lazy.nvim" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  nvim-treesitter
&lt;/h3&gt;

&lt;p&gt;Provides features such as syntax-aware highlighting, indentation, and code folding.&lt;br&gt;
The repository was temporarily archived, which attracted attention from the Neovim community, but has since been reopened.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nvim-treesitter" rel="noopener noreferrer"&gt;
        nvim-treesitter
      &lt;/a&gt; / &lt;a href="https://github.com/nvim-treesitter/nvim-treesitter" rel="noopener noreferrer"&gt;
        nvim-treesitter
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Nvim Treesitter configurations and abstraction layer
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
  &lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/2361214/239203594-0513b223-c902-4f12-92ee-8ac4d8d6f41f.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTA0NzM4MzcsIm5iZiI6MTc5MDQ3MzUzNywicGF0aCI6Ii8yMzYxMjE0LzIzOTIwMzU5NC0wNTEzYjIyMy1jOTAyLTRmMTItOTJlZS04YWM0ZDhkNmY0MWYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDkyNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA5MjdUMDE0NTM3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ODVkZmQ3YTQ0OTQyM2UzOTI0MjhiMzAzYmEzMWVlYzNhMzZhMWQxM2VlMDk2NjhiNDY4YThlM2FlODlhMTAzMyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.kxZbAxBLOJs3YOGzbMZ9p6nEL_Oh99cERCAMdKWg004"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F2361214%2F239203594-0513b223-c902-4f12-92ee-8ac4d8d6f41f.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTA0NzM4MzcsIm5iZiI6MTc5MDQ3MzUzNywicGF0aCI6Ii8yMzYxMjE0LzIzOTIwMzU5NC0wNTEzYjIyMy1jOTAyLTRmMTItOTJlZS04YWM0ZDhkNmY0MWYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDkyNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA5MjdUMDE0NTM3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ODVkZmQ3YTQ0OTQyM2UzOTI0MjhiMzAzYmEzMWVlYzNhMzZhMWQxM2VlMDk2NjhiNDY4YThlM2FlODlhMTAzMyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.kxZbAxBLOJs3YOGzbMZ9p6nEL_Oh99cERCAMdKWg004" alt="nvim-treesitter"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;nvim-treesitter&lt;/code&gt; plugin provides&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;functions for installing, updating, and removing &lt;a href="https://github.com/nvim-treesitter/nvim-treesitter/SUPPORTED_LANGUAGES.md" rel="noopener noreferrer"&gt;&lt;strong&gt;tree-sitter parsers&lt;/strong&gt;&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;a collection of &lt;strong&gt;queries&lt;/strong&gt; for enabling tree-sitter features built into Neovim for these languages;&lt;/li&gt;
&lt;li&gt;a staging ground for &lt;a href="https://github.com/nvim-treesitter/nvim-treesitter#Supported-features" rel="noopener noreferrer"&gt;treesitter-based features&lt;/a&gt; considered for upstreaming to Neovim.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For details on these and how to help improving them, see &lt;a href="https://github.com/nvim-treesitter/nvim-treesitter/./CONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-alert markdown-alert-caution"&gt;
&lt;p class="markdown-alert-title"&gt;Caution&lt;/p&gt;
&lt;p&gt;This is a full, incompatible, rewrite: Treat this as a different plugin you need to set up from scratch following the instructions below. If you can't or don't want to update, specify the &lt;a href="https://github.com/nvim-treesitter/nvim-treesitter/blob/master/README.md" rel="noopener noreferrer"&gt;&lt;code&gt;master&lt;/code&gt; branch&lt;/a&gt; (which is locked but will remain available for backward compatibility with Nvim 0.11).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Quickstart&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Requirements&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Neovim 0.12.0 or later (nightly)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tar&lt;/code&gt; and &lt;code&gt;curl&lt;/code&gt; in your path&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/tree-sitter/tree-sitter/blob/master/crates/cli/README.md" rel="noopener noreferrer"&gt;&lt;code&gt;tree-sitter-cli&lt;/code&gt;&lt;/a&gt; (0.26.1 or later, installed via your package manager, &lt;strong&gt;not npm&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;a C compiler in your path (see &lt;a href="https://docs.rs/cc/latest/cc/#compile-time-requirements" rel="nofollow noopener noreferrer"&gt;https://docs.rs/cc/latest/cc/#compile-time-requirements&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-alert markdown-alert-important"&gt;
&lt;p class="markdown-alert-title"&gt;Important&lt;/p&gt;
&lt;p&gt;The current &lt;strong&gt;support policy&lt;/strong&gt; for Neovim is&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;em&gt;latest&lt;/em&gt; &lt;a href="https://github.com/neovim/neovim/releases/tag/stable" rel="noopener noreferrer"&gt;stable release&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;the &lt;em&gt;latest&lt;/em&gt; &lt;a href="https://github.com/neovim/neovim/releases/tag/nightly" rel="noopener noreferrer"&gt;nightly&lt;/a&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nvim-treesitter/nvim-treesitter" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  blink.cmp
&lt;/h3&gt;

&lt;p&gt;A fast completion engine supporting sources such as buffers, LSP, file paths, and snippets, both in buffers and on the command line.&lt;br&gt;
Neovim's built-in completion has &lt;a href="https://github.com/neovim/neovim/pull/35141" rel="noopener noreferrer"&gt;gained some of these capabilities&lt;/a&gt; in v0.12, but some completion sources and integrations are &lt;a href="https://github.com/neovim/neovim/pull/41841" rel="noopener noreferrer"&gt;still being developed&lt;/a&gt;. SnaxVim therefore continues to use blink.cmp for now.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/saghen" rel="noopener noreferrer"&gt;
        saghen
      &lt;/a&gt; / &lt;a href="https://github.com/saghen/blink.cmp" rel="noopener noreferrer"&gt;
        blink.cmp
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Performant, batteries-included completion plugin for Neovim 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-alert markdown-alert-warning"&gt;
&lt;p class="markdown-alert-title"&gt;Warning&lt;/p&gt;
&lt;p&gt;V2 is under active development with many breaking changes. Consider staying on stable by using &lt;code&gt;branch = 'v1'&lt;/code&gt; or &lt;code&gt;version = "1.*"&lt;/code&gt; in your &lt;code&gt;lazy.nvim&lt;/code&gt; config. &lt;a href="https://cmp.saghen.dev/" rel="nofollow noopener noreferrer"&gt;See the V1 docs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For V2, &lt;a href="https://github.com/saghen/blink.lib" rel="noopener noreferrer"&gt;blink.lib&lt;/a&gt; must be installed via your package manager. See the &lt;a href="https://github.com/saghen/blink.cmp/./UPGRADE.md" rel="noopener noreferrer"&gt;UPGRADE.md&lt;/a&gt; for a detailed migration guide.&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Blink Completion (blink.cmp)&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;
    Performant, batteries-included completion plugin for Neovim
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://github.com/saghen/blink.cmp/stargazers" rel="noopener noreferrer"&gt;
        &lt;img alt="Stars" src="https://camo.githubusercontent.com/a28d0a12b0f5dff90958ff2f0c7e01896d63257d8add7f32d80bbb800d82b193/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f73616768656e2f626c696e6b2e636d703f7374796c653d666f722d7468652d6261646765266c6f676f3d737461727368697026636f6c6f723d433943424646266c6f676f436f6c6f723d443945304545266c6162656c436f6c6f723d333032443431"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/saghen/blink.cmp/issues" rel="noopener noreferrer"&gt;
        &lt;img alt="Issues" src="https://camo.githubusercontent.com/360fa9ae7e0159d1c3ca535a8434b1566b73f723972555f30dfc31f1cc966b91/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f73616768656e2f626c696e6b2e636d703f7374796c653d666f722d7468652d6261646765266c6f676f3d62696c6962696c6926636f6c6f723d463545304443266c6f676f436f6c6f723d443945304545266c6162656c436f6c6f723d333032443431"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/saghen/blink.cmp/contributors" rel="noopener noreferrer"&gt;
        &lt;img alt="Contributors" src="https://camo.githubusercontent.com/399107f9cca7661af034ecc7c771d88db0ab76286329cd45dc6d350acc2d26c8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f73616768656e2f626c696e6b2e636d703f636f6c6f723d253233444442364632266c6162656c3d434f4e5452494255544f5253266c6f676f3d676974267374796c653d666f722d7468652d6261646765266c6f676f436f6c6f723d443945304545266c6162656c436f6c6f723d333032443431"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://cmp.saghen.dev" rel="nofollow noopener noreferrer"&gt;V1 Documentation&lt;/a&gt;
  ·
  &lt;a href="https://main.cmp.saghen.dev" rel="nofollow noopener noreferrer"&gt;V2 Documentation&lt;/a&gt;
  ·
  &lt;a href="https://cmp.saghen.dev/installation" rel="nofollow noopener noreferrer"&gt;Installation&lt;/a&gt;
  ·
  &lt;a href="https://cmp.saghen.dev/recipes" rel="nofollow noopener noreferrer"&gt;Recipes&lt;/a&gt;
  ·
  &lt;a href="https://cmp.saghen.dev/configuration/general" rel="nofollow noopener noreferrer"&gt;Configuration&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;blink.cmp&lt;/strong&gt; is a completion plugin with support for LSPs, cmdline, signature help, and snippets. It uses an &lt;a href="https://cmp.saghen.dev/configuration/fuzzy.html#rust-vs-lua-implementation" rel="nofollow noopener noreferrer"&gt;optional&lt;/a&gt; custom &lt;a href="https://github.com/saghen/frizbee" rel="noopener noreferrer"&gt;fuzzy matcher&lt;/a&gt; for typo resistance. It provides extensibility via pluggable sources (LSP, buffer, snippets, etc), component based rendering and dynamic configuration.&lt;/p&gt;


  
    
    &lt;span class="m-1"&gt;blink-cmp-demo.mp4&lt;/span&gt;
    
  

  

  


&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Works out of the box with no additional configuration&lt;/li&gt;
&lt;li&gt;Updates on every keystroke (0.5-4ms async, single core)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/saghen/frizbee" rel="noopener noreferrer"&gt;Typo resistant fuzzy&lt;/a&gt; with frecency and proximity bonus&lt;/li&gt;
&lt;li&gt;Extensive LSP support (&lt;a href="https://cmp.saghen.dev/development/lsp-tracker" rel="nofollow noopener noreferrer"&gt;tracker&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cmp.saghen.dev/configuration/snippets.html" rel="nofollow noopener noreferrer"&gt;Snippet support&lt;/a&gt;: native &lt;code&gt;vim.snippet&lt;/code&gt; (including &lt;code&gt;friendly-snippets&lt;/code&gt;)…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/saghen/blink.cmp" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  mason.nvim
&lt;/h3&gt;

&lt;p&gt;Installs and manages external tools such as language servers, debuggers, linters, and formatters, making them available to Neovim.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mason-org" rel="noopener noreferrer"&gt;
        mason-org
      &lt;/a&gt; / &lt;a href="https://github.com/mason-org/mason.nvim" rel="noopener noreferrer"&gt;
        mason.nvim
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Portable package manager for Neovim that runs everywhere Neovim runs. Easily install and manage LSP servers, DAP servers, linters, and formatters.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/30217849b226969a247e7d62593d14d09b2206f721807dc2f3f3fc32cf7124af/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c696e75782d2532332e7376673f6c6f676f3d6c696e757826636f6c6f723d464343363234266c6f676f436f6c6f723d626c61636b"&gt;&lt;img src="https://camo.githubusercontent.com/30217849b226969a247e7d62593d14d09b2206f721807dc2f3f3fc32cf7124af/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c696e75782d2532332e7376673f6c6f676f3d6c696e757826636f6c6f723d464343363234266c6f676f436f6c6f723d626c61636b" alt="Linux"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/39fd2b3fb611a8eea6618ae6ead7b7b67fa3a5db93ccc7870c94ea99b2b28637/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61634f532d2532332e7376673f6c6f676f3d6170706c6526636f6c6f723d303030303030266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/39fd2b3fb611a8eea6618ae6ead7b7b67fa3a5db93ccc7870c94ea99b2b28637/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61634f532d2532332e7376673f6c6f676f3d6170706c6526636f6c6f723d303030303030266c6f676f436f6c6f723d7768697465" alt="macOS"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/ad7aa2a4f6a84423df843eef1e499f4d9ca1d30d8f9929512b882ae2998be44c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f57696e646f77732d2532332e7376673f6c6f676f3d77696e646f777326636f6c6f723d303037384436266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/ad7aa2a4f6a84423df843eef1e499f4d9ca1d30d8f9929512b882ae2998be44c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f57696e646f77732d2532332e7376673f6c6f676f3d77696e646f777326636f6c6f723d303037384436266c6f676f436f6c6f723d7768697465" alt="Windows"&gt;&lt;/a&gt;
&lt;a href="https://github.com/mason-org/mason.nvim/actions?query=workflow%3ATests+branch%3Amain+event%3Apush" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/mason-org/mason.nvim/workflows/Tests/badge.svg" alt="GitHub CI"&gt;&lt;/a&gt;
&lt;a href="https://github.com/sponsors/williamboman" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4ff07de10871ef0c59c9f506f33cf7d9670541ebe880c3d9eb380172ddff2c7e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73706f6e736f72732f77696c6c69616d626f6d616e" alt="Sponsors"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/6705160/177613416-0c0354d2-f431-40d8-87f0-21310f0bba0e.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F6705160%2F177613416-0c0354d2-f431-40d8-87f0-21310f0bba0e.png" alt="mason.nvim"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
    Portable package manager for Neovim that runs everywhere Neovim runs.&lt;br&gt;
    Easily install and manage LSP servers, DAP servers, linters, and formatters.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;code&gt;:help mason.nvim&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;sup&gt;Latest version: v2.3.1&lt;/sup&gt;
&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mason-org/mason.nvim#introduction" rel="noopener noreferrer"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/mason-org/mason.nvim#installation--usage" rel="noopener noreferrer"&gt;Installation &amp;amp; Usage&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mason-org/mason.nvim#recommended-setup-for-lazynvim" rel="noopener noreferrer"&gt;Recommended setup for &lt;code&gt;lazy.nvim&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/mason-org/mason.nvim#requirements" rel="noopener noreferrer"&gt;Requirements&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/mason-org/mason.nvim#commands" rel="noopener noreferrer"&gt;Commands&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/mason-org/mason.nvim#registries" rel="noopener noreferrer"&gt;Registries&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/mason-org/mason.nvim#screenshots" rel="noopener noreferrer"&gt;Screenshots&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/mason-org/mason.nvim#firewall-socketdev" rel="noopener noreferrer"&gt;Firewall (socket.dev)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/mason-org/mason.nvim#configuration" rel="noopener noreferrer"&gt;Configuration&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Introduction&lt;/h2&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/mason-org/mason.nvim/./doc/mason.txt#L11" rel="noopener noreferrer"&gt;&lt;code&gt;:h mason-introduction&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;mason.nvim&lt;/code&gt; is a Neovim plugin that allows you to easily manage external editor tooling such as LSP servers, DAP servers,
linters, and formatters through a single interface. It runs everywhere Neovim runs (across Linux, macOS, Windows, etc.),
with only a small set of &lt;a href="https://github.com/mason-org/mason.nvim#requirements" rel="noopener noreferrer"&gt;external requirements&lt;/a&gt; needed.&lt;/p&gt;
&lt;p&gt;Packages are installed in Neovim's data directory (&lt;a href="https://neovim.io/doc/user/starting.html#standard-path" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;:h standard-path&lt;/code&gt;&lt;/a&gt;) by default. Executables are
linked to a single &lt;code&gt;bin/&lt;/code&gt; directory, which &lt;code&gt;mason.nvim&lt;/code&gt; will add to Neovim's PATH during setup, allowing seamless access
from Neovim builtins (LSP client, shell, terminal, etc.) as well as other 3rd party plugins.&lt;/p&gt;
&lt;p&gt;For a list of all available packages, see &lt;a href="https://mason-registry.dev/registry/list" rel="nofollow noopener noreferrer"&gt;https://mason-registry.dev/registry/list&lt;/a&gt;…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/mason-org/mason.nvim" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  nvim-lspconfig
&lt;/h3&gt;

&lt;p&gt;Provides configurations for connecting Neovim's built-in LSP client to various language servers.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/neovim" rel="noopener noreferrer"&gt;
        neovim
      &lt;/a&gt; / &lt;a href="https://github.com/neovim/nvim-lspconfig" rel="noopener noreferrer"&gt;
        nvim-lspconfig
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Quickstart configs for Nvim LSP
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;nvim-lspconfig&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;nvim-lspconfig is a collection of LSP server configurations for the &lt;a href="https://neovim.io/doc/user/lsp.html" rel="nofollow noopener noreferrer"&gt;Nvim LSP client&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;View &lt;a href="https://github.com/neovim/nvim-lspconfig/doc/configs.md" rel="noopener noreferrer"&gt;all configs&lt;/a&gt;, or run &lt;code&gt;:help lspconfig-all&lt;/code&gt; from Nvim.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Important ⚠️
&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;require('lspconfig')&lt;/code&gt; (the legacy "framework" of nvim-lspconfig) &lt;a href="https://github.com/neovim/nvim-lspconfig/issues/3693" rel="noopener noreferrer"&gt;is &lt;strong&gt;deprecated&lt;/strong&gt;&lt;/a&gt; in favor of &lt;a href="https://neovim.io/doc/user/lsp.html#lsp-config" rel="nofollow noopener noreferrer"&gt;vim.lsp.config&lt;/a&gt; (Nvim 0.11+)
&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://github.com/neovim/nvim-lspconfig/./lua/lspconfig.lua" rel="noopener noreferrer"&gt;lspconfig.lua&lt;/a&gt; &lt;em&gt;module&lt;/em&gt; will be dropped. Calls to &lt;code&gt;require('lspconfig')&lt;/code&gt; will show a warning, which will later become an error.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;nvim-lspconfig itself is &lt;strong&gt;NOT deprecated&lt;/strong&gt;. It provides server-specific configs.
&lt;ul&gt;
&lt;li&gt;The configs live in the &lt;a href="https://github.com/neovim/nvim-lspconfig/./lsp/" rel="noopener noreferrer"&gt;lsp/&lt;/a&gt; directory. &lt;code&gt;vim.lsp.config&lt;/code&gt; automatically finds them and merges them with any local &lt;code&gt;lsp/*.lua&lt;/code&gt; configs defined by you or a plugin.&lt;/li&gt;
&lt;li&gt;The old configs in &lt;a href="https://github.com/neovim/nvim-lspconfig/./lua/lspconfig/" rel="noopener noreferrer"&gt;lua/lspconfig/&lt;/a&gt; are &lt;strong&gt;deprecated&lt;/strong&gt; and will be removed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Migration instructions&lt;/h3&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Upgrade to Nvim 0.11+&lt;/li&gt;
&lt;li&gt;(Optional) Use &lt;code&gt;vim.lsp.config('…')&lt;/code&gt; (not &lt;code&gt;require'lspconfig'.….setup{}&lt;/code&gt;) to &lt;em&gt;customize&lt;/em&gt; or &lt;em&gt;define&lt;/em&gt; a config.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;vim.lsp.enable('…')&lt;/code&gt; (not &lt;code&gt;require'lspconfig'.….setup{}&lt;/code&gt;) to &lt;em&gt;enable&lt;/em&gt; a config, so that it activates for its &lt;code&gt;filetypes&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Support&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;These configs are &lt;strong&gt;best-effort and supported by the&lt;/strong&gt;…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/neovim/nvim-lspconfig" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  nvim-dap
&lt;/h3&gt;

&lt;p&gt;Implements a DAP client for Neovim, handling communication with debug adapters and controlling debugging sessions.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://codeberg.org/mfussenegger/nvim-dap" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcodeberg.org%2Fmfussenegger%2Fnvim-dap%2F-%2Fsummary-card" height="600" class="m-0" width="1200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://codeberg.org/mfussenegger/nvim-dap" rel="noopener noreferrer" class="c-link"&gt;
            mfussenegger/nvim-dap: Debug Adapter Protocol client implementation for Neovim - Codeberg.org
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Debug Adapter Protocol client implementation for Neovim
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcodeberg.org%2Fassets%2Fimg%2Ffavicon.svg" width="16" height="16"&gt;
          codeberg.org
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  nvim-dap-view
&lt;/h3&gt;

&lt;p&gt;Provides a UI for inspecting debugging sessions managed by nvim-dap, including variables, call stacks, and breakpoints.&lt;br&gt;
Similar in purpose to &lt;a href="https://github.com/rcarriga/nvim-dap-ui" rel="noopener noreferrer"&gt;nvim-dap-ui&lt;/a&gt;, but it displays debugging information in a single switchable window rather than across multiple split windows.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/igorlfs" rel="noopener noreferrer"&gt;
        igorlfs
      &lt;/a&gt; / &lt;a href="https://github.com/igorlfs/nvim-dap-view" rel="noopener noreferrer"&gt;
        nvim-dap-view
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Visualize debugging sessions in neovim
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/64fc6460be2ff4f32e5af0f3825cd95e70050c3df7f85327955953d069ea72c8/68747470733a2f2f692e6962622e636f2f6762535a764e30532f6c6f676f2e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/64fc6460be2ff4f32e5af0f3825cd95e70050c3df7f85327955953d069ea72c8/68747470733a2f2f692e6962622e636f2f6762535a764e30532f6c6f676f2e706e67" alt="logo" width="200" height="200" class="js-gh-image-fallback"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;nvim-dap-view&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Modern debugging UI for neovim&lt;/p&gt;
&lt;/blockquote&gt;

  
    
    &lt;span class="m-1"&gt;dap-view-demo.mp4&lt;/span&gt;
  

  

  


&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Introduction&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;A UI for &lt;a href="https://github.com/mfussenegger/nvim-dap" rel="noopener noreferrer"&gt;&lt;code&gt;nvim-dap&lt;/code&gt;&lt;/a&gt;&lt;sup&gt;&lt;a href="https://github.com/igorlfs/nvim-dap-view#user-content-fn-1-81cbc398b88e7de83c87c068035b6cab" id="user-content-fnref-1-81cbc398b88e7de83c87c068035b6cab" rel="noopener noreferrer"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-alert markdown-alert-warning"&gt;
&lt;p class="markdown-alert-title"&gt;Warning&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requires neovim 0.11+&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-lua notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-smi"&gt;vim&lt;/span&gt;.&lt;span class="pl-e"&gt;pack&lt;/span&gt;.&lt;span class="pl-c1"&gt;add&lt;/span&gt;({
 { &lt;span class="pl-smi"&gt;src&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;https://github.com/igorlfs/nvim-dap-view&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-smi"&gt;version&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-smi"&gt;vim&lt;/span&gt;.&lt;span class="pl-e"&gt;version&lt;/span&gt;.&lt;span class="pl-c1"&gt;range&lt;/span&gt;(&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;1.*&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;)  },
})&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Watch expressions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9a68731ac6233020e5b7f28c18a0e06aaf4ab48725017c1eeb92109acebdb175/68747470733a2f2f692e6962622e636f2f68315870644e726d2f696d6167652e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/9a68731ac6233020e5b7f28c18a0e06aaf4ab48725017c1eeb92109acebdb175/68747470733a2f2f692e6962622e636f2f68315870644e726d2f696d6167652e706e67" alt="watches view"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Navigate in the call stack&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2c1f531493e2b89d605a69e4d68affb9ff983d02eef36684334be8984652f92a/68747470733a2f2f692e6962622e636f2f4d44475a5a34686e2f696d6167652e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/2c1f531493e2b89d605a69e4d68affb9ff983d02eef36684334be8984652f92a/68747470733a2f2f692e6962622e636f2f4d44475a5a34686e2f696d6167652e706e67" alt="threads view"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manipulate breakpoints&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/79204bfdde3f151f70f7927a0cb234a596da3a1ea3f791d5177eed0595ad9e5a/68747470733a2f2f692e6962622e636f2f35686743544363312f696d6167652e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/79204bfdde3f151f70f7927a0cb234a596da3a1ea3f791d5177eed0595ad9e5a/68747470733a2f2f692e6962622e636f2f35686743544363312f696d6167652e706e67" alt="breakpoints view"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Inspect and modify variables in scope&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/0a806a4890820bbee181ed0881d3a7097a6d4183efd6b42d1a713342d319fa76/68747470733a2f2f692e6962622e636f2f337976634d3674772f696d6167652e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/0a806a4890820bbee181ed0881d3a7097a6d4183efd6b42d1a713342d319fa76/68747470733a2f2f692e6962622e636f2f337976634d3674772f696d6167652e706e67" alt="scopes view"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;REPL&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/0633e69ccfb9df37a0dffa383babe3a5ce30d0c4c18b559fad86d96671c59669/68747470733a2f2f692e6962622e636f2f58666344357774542f696d6167652e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/0633e69ccfb9df37a0dffa383babe3a5ce30d0c4c18b559fad86d96671c59669/68747470733a2f2f692e6962622e636f2f58666344357774542f696d6167652e706e67" alt="repl view"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Inline virtual text variables&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/35f1d440a1e046ebf86f7ee9617822fc1413ad754f35e8d7cd249b08117bd03e/68747470733a2f2f692e6962622e636f2f67623273443963302f696d6167652e706e673e"&gt;&lt;img src="https://camo.githubusercontent.com/35f1d440a1e046ebf86f7ee9617822fc1413ad754f35e8d7cd249b08117bd03e/68747470733a2f2f692e6962622e636f2f67623273443963302f696d6167652e706e673e" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hover&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/77bc1d59b4dde259755f6d0694bf75bbb23ec14fd63a30ce816a481e842c7027/68747470733a2f2f692e6962622e636f2f58684a42396a782f696d6167652e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/77bc1d59b4dde259755f6d0694bf75bbb23ec14fd63a30ce816a481e842c7027/68747470733a2f2f692e6962622e636f2f58684a42396a782f696d6167652e706e67" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;And more!&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting Started&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Start a regular debugging session. When desired, you can use &lt;code&gt;:DapViewOpen&lt;/code&gt; to start the plugin. You can switch to another section using the letter outlined in the &lt;code&gt;'winbar'&lt;/code&gt; (e.g., &lt;code&gt;B&lt;/code&gt; for "Breakpoints"). Explore what you can do in each section by using &lt;code&gt;g?&lt;/code&gt; to inspect the keymaps.&lt;/p&gt;
&lt;p&gt;Once you're done debugging, you can close the plugin with &lt;code&gt;:DapViewClose&lt;/code&gt; and then terminate your session as usual.&lt;/p&gt;
&lt;p&gt;There's a lot more you can do: &lt;code&gt;nvim-dap-view&lt;/code&gt; is highly customizable. To learn…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/igorlfs/nvim-dap-view" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  nvim-lint
&lt;/h3&gt;

&lt;p&gt;Runs external linting tools from Neovim and displays their diagnostic results.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://codeberg.org/mfussenegger/nvim-lint" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcodeberg.org%2Fmfussenegger%2Fnvim-lint%2F-%2Fsummary-card" height="600" class="m-0" width="1200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://codeberg.org/mfussenegger/nvim-lint" rel="noopener noreferrer" class="c-link"&gt;
            mfussenegger/nvim-lint: An asynchronous linter plugin for Neovim complementary to the built-in Language Server Protocol support. - Codeberg.org
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            An asynchronous linter plugin for Neovim complementary to the built-in Language Server Protocol support.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcodeberg.org%2Fassets%2Fimg%2Ffavicon.svg" width="16" height="16"&gt;
          codeberg.org
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  conform.nvim
&lt;/h3&gt;

&lt;p&gt;Provides an interface for formatting code with external formatters, including on save.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/stevearc" rel="noopener noreferrer"&gt;
        stevearc
      &lt;/a&gt; / &lt;a href="https://github.com/stevearc/conform.nvim" rel="noopener noreferrer"&gt;
        conform.nvim
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Lightweight yet powerful formatter plugin for Neovim
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;conform.nvim&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Lightweight yet powerful formatter plugin for Neovim&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#requirements" rel="noopener noreferrer"&gt;Requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#features" rel="noopener noreferrer"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#installation" rel="noopener noreferrer"&gt;Installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#setup" rel="noopener noreferrer"&gt;Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#formatters" rel="noopener noreferrer"&gt;Formatters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/stevearc/conform.nvim#customizing-formatters" rel="noopener noreferrer"&gt;Customizing formatters&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#magic-strings" rel="noopener noreferrer"&gt;Magic strings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#recipes" rel="noopener noreferrer"&gt;Recipes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#debugging" rel="noopener noreferrer"&gt;Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#advanced-topics" rel="noopener noreferrer"&gt;Advanced topics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#options" rel="noopener noreferrer"&gt;Options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#formatter-options" rel="noopener noreferrer"&gt;Formatter options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/stevearc/conform.nvim#api" rel="noopener noreferrer"&gt;API&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#setupopts" rel="noopener noreferrer"&gt;setup(opts)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#formatopts-callback" rel="noopener noreferrer"&gt;format(opts, callback)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#list_formattersbufnr" rel="noopener noreferrer"&gt;list_formatters(bufnr)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#list_formatters_to_runbufnr" rel="noopener noreferrer"&gt;list_formatters_to_run(bufnr)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#list_all_formatters" rel="noopener noreferrer"&gt;list_all_formatters()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#get_formatter_infoformatter-bufnr" rel="noopener noreferrer"&gt;get_formatter_info(formatter, bufnr)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#faq" rel="noopener noreferrer"&gt;FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stevearc/conform.nvim#acknowledgements" rel="noopener noreferrer"&gt;Acknowledgements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Requirements&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Neovim 0.10+ (for older versions, use a &lt;a href="https://github.com/stevearc/conform.nvim/branches" rel="noopener noreferrer"&gt;nvim-0.x branch&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Preserves extmarks and folds&lt;/strong&gt; - Most formatters replace the entire buffer, which clobbers extmarks and folds, and can cause the viewport and cursor to jump unexpectedly. Conform calculates minimal diffs and applies them using the built-in LSP format utilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fixes bad-behaving LSP formatters&lt;/strong&gt; - Some LSP servers are lazy and simply replace the entire buffer, leading to the problems mentioned above. Conform hooks into the LSP handler and turns these responses into proper piecewise changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enables range formatting for all formatters&lt;/strong&gt; - Since conform calculates minimal diffs, it can perform range formatting &lt;a href="https://github.com/stevearc/conform.nvim/doc/advanced_topics.md#range-formatting" rel="noopener noreferrer"&gt;even if the underlying formatter doesn't support it.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple API&lt;/strong&gt; -…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/stevearc/conform.nvim" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  dashboard-nvim
&lt;/h3&gt;

&lt;p&gt;Displays a dashboard when launching Neovim, featuring recent files and common actions.&lt;br&gt;
In SnaxVim, it serves as an entry point for configuring development features such as LSP, debugging, linting, and formatting. Enabled by default, it can be easily removed if not needed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frfzrcnvj8ifx03mp7zla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frfzrcnvj8ifx03mp7zla.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nvimdev" rel="noopener noreferrer"&gt;
        nvimdev
      &lt;/a&gt; / &lt;a href="https://github.com/nvimdev/dashboard-nvim" rel="noopener noreferrer"&gt;
        dashboard-nvim
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      vim dashboard
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
  Fancy and Blazing Fast start screen plugin of neovim
&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hyper&lt;/th&gt;
&lt;th&gt;Doom&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/41671631/215015845-b13343c4-427e-45d6-9f92-267ab909eff1.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F41671631%2F215015845-b13343c4-427e-45d6-9f92-267ab909eff1.png" width="80%" height="80%/"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt; &lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/41671631/214518543-d7d6afbf-f405-4a6f-a505-568c5a101e92.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F41671631%2F214518543-d7d6afbf-f405-4a6f-a505-568c5a101e92.png" width="80%" height="80%/"&gt;&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Feature&lt;/h1&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Low memory usage. dashboard does not store the all user configs in memory like header etc these string will take some memory. now it will be clean after you open a file. you can still use dashboard command to open a new one , then dashboard will read the config from cache.&lt;/li&gt;
&lt;li&gt;Blazing fast&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Install&lt;/h1&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Lazy.nvim&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-lua notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;{
  &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;nvimdev/dashboard-nvim&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;,
  &lt;span class="pl-smi"&gt;event&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;VimEnter&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;,
  &lt;span class="pl-en"&gt;config&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;function&lt;/span&gt;()
    &lt;span class="pl-c1"&gt;require&lt;/span&gt;(&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;dashboard&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;).&lt;span class="pl-c1"&gt;setup&lt;/span&gt; {
      &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;--&lt;/span&gt; config&lt;/span&gt;
    }
  &lt;span class="pl-k"&gt;end&lt;/span&gt;,
  &lt;span class="pl-smi"&gt;dependencies&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; { {&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;nvim-tree/nvim-web-devicons&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;}}
}&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Packer&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-lua notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;use&lt;/span&gt; {
  &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;nvimdev/dashboard-nvim&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;,
  &lt;span class="pl-smi"&gt;event&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;VimEnter&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;,
  &lt;span class="pl-en"&gt;config&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;function&lt;/span&gt;()
    &lt;span class="pl-c1"&gt;require&lt;/span&gt;(&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;dashboard&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;).&lt;span class="pl-c1"&gt;setup&lt;/span&gt; {
      &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;--&lt;/span&gt; config&lt;/span&gt;
    }
  &lt;span class="pl-k"&gt;end&lt;/span&gt;,
  &lt;span class="pl-smi"&gt;requires&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; {&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;nvim-tree/nvim-web-devicons&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;}
}&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Configuration&lt;/h1&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Options&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-lua notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-smi"&gt;theme&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;hyper&lt;span class="pl-pds"&gt;'    &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nvimdev/dashboard-nvim" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;SnaxVim is not an empty template. It is a minimal IDE configuration where each plugin has a clear purpose and contributes to a specific part of the development workflow.&lt;/p&gt;

&lt;p&gt;Rather than including every possible option, SnaxVim prioritizes commonly needed development features. This provides a practical IDE experience while minimizing the need for users to remove or replace preconfigured components.&lt;/p&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/SnaxVim/SnaxVim" rel="noopener noreferrer"&gt;https://github.com/SnaxVim/SnaxVim&lt;/a&gt;&lt;/p&gt;

</description>
      <category>neovim</category>
      <category>vim</category>
      <category>ide</category>
      <category>editors</category>
    </item>
    <item>
      <title>How Fast Can Neovim Start? Benchmarking Popular Distros</title>
      <dc:creator>glmlm</dc:creator>
      <pubDate>Tue, 22 Sep 2026 00:29:00 +0000</pubDate>
      <link>https://dev.to/glmlm/benchmarking-snaxvims-startup-performance-against-popular-neovim-distros-205h</link>
      <guid>https://dev.to/glmlm/benchmarking-snaxvims-startup-performance-against-popular-neovim-distros-205h</guid>
      <description>&lt;p&gt;Fast startup is a small but important part of a pleasant Neovim experience. This benchmark examines how SnaxVim compares with several popular Neovim distros&lt;sup id="fnref1"&gt;1&lt;/sup&gt; using multiple measurement methods.&lt;/p&gt;

&lt;p&gt;For an overview of SnaxVim's design goals and philosophy, see the previous article: &lt;a href="https://dev.to/glmlm/snaxvim-a-minimal-blazingly-fast-neovim-setup-57cf"&gt;SnaxVim – A Minimal, Blazingly Fast Neovim Setup (Only 10 Plugins Included)&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  📋 1. Prerequisites
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Target Distros &amp;amp; Commit Hashes
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Distro Name&lt;/th&gt;
&lt;th&gt;Repository&lt;/th&gt;
&lt;th&gt;Pinned Commit&lt;/th&gt;
&lt;th&gt;Core Configuration Repository&lt;sup id="fnref2"&gt;2&lt;/sup&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SnaxVim&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/SnaxVim/SnaxVim" rel="noopener noreferrer"&gt;SnaxVim/SnaxVim&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;81fc9f7&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AstroNvim&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/AstroNvim/template" rel="noopener noreferrer"&gt;AstroNvim/template&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;49a7161&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/AstroNvim/AstroNvim" rel="noopener noreferrer"&gt;AstroNvim/AstroNvim&lt;/a&gt; (&lt;code&gt;aa0545f&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;kickstart.nvim&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/nvim-lua/kickstart.nvim" rel="noopener noreferrer"&gt;nvim-lua/kickstart.nvim&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;80743df&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LazyVim&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/LazyVim/starter" rel="noopener noreferrer"&gt;LazyVim/starter&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;803bc18&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/LazyVim/LazyVim" rel="noopener noreferrer"&gt;LazyVim/LazyVim&lt;/a&gt; (&lt;code&gt;9997009&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NvChad&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/NvChad/starter" rel="noopener noreferrer"&gt;NvChad/starter&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;e3572e1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/NvChad/NvChad" rel="noopener noreferrer"&gt;NvChad/NvChad&lt;/a&gt; (&lt;code&gt;add44b9&lt;/code&gt;), &lt;a href="https://github.com/NvChad/ui" rel="noopener noreferrer"&gt;NvChad/ui&lt;/a&gt; (&lt;code&gt;6ced113&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  System Environment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Neovim Version&lt;/strong&gt;: NVIM v0.12.5&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OS / Kernel&lt;/strong&gt;: Linux 6.18.52 x86_64 GNU/Linux&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CPU&lt;/strong&gt;: Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: Western Digital PC SN520 NVMe SSD 512GB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmark Tools&lt;/strong&gt;: &lt;a href="https://github.com/sharkdp/hyperfine/releases/tag/v1.20.0" rel="noopener noreferrer"&gt;hyperfine v1.20.0&lt;/a&gt;, &lt;a href="https://github.com/rhysd/vim-startuptime/releases/tag/v1.3.2" rel="noopener noreferrer"&gt;vim-startuptime v1.3.2&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 2. Methodology
&lt;/h2&gt;

&lt;p&gt;Neovim startup measurements vary by tool because each approach uses a different measurement boundary. Although they often show similar broad trends, their absolute values are not directly interchangeable. Startup time is therefore measured using multiple methods to provide a multidimensional view of each Neovim distribution's startup performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Method A: External Process Lifecycle
&lt;/h3&gt;

&lt;p&gt;Measures wall-clock time externally from process launch until the &lt;code&gt;nvim +qa&lt;/code&gt; command exits. This includes Neovim initialization and exit processing, as well as effects from the operating system and execution environment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyperfine &lt;span class="nt"&gt;--min-runs&lt;/span&gt; 100 &lt;span class="nt"&gt;--warmup&lt;/span&gt; 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Method B: Neovim Startup Timeline
&lt;/h3&gt;

&lt;p&gt;Uses &lt;code&gt;vim-startuptime&lt;/code&gt;, which repeatedly launches Neovim with its built-in &lt;code&gt;--startuptime&lt;/code&gt; option. It focuses on initialization work recorded by Neovim and should not be interpreted as the complete wall-clock time until the editor is visibly ready.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;NVIM_APPNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"DistroName"&lt;/span&gt; vim-startuptime &lt;span class="nt"&gt;-vimpath&lt;/span&gt; nvim &lt;span class="nt"&gt;-count&lt;/span&gt; 100 &lt;span class="nt"&gt;-script&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 8 | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Total"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Method C: Plugin Initialization to UI Readiness
&lt;/h3&gt;

&lt;p&gt;Measures lazy.nvim's reported startup time. lazy.nvim calculates &lt;code&gt;stats().startuptime&lt;/code&gt; up to the &lt;code&gt;UIEnter&lt;/code&gt; event; the script waits for the subsequent &lt;code&gt;LazyVimStarted&lt;/code&gt; user event and then records the already-calculated value. In this setup, the value is based on Neovim process CPU time rather than external wall-clock time.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;1..100&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nv"&gt;NVIM_APPNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"DistroName"&lt;/span&gt; nvim &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"autocmd User LazyVimStarted lua local h, l = pcall(require, 'lazy'); local f = io.open('/tmp/lazy_runs.txt', 'a'); if f and h then f:write(tostring(l.stats().startuptime) .. '&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;'); f:close() end; vim.cmd('qa')"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{if(NR==1){min=$1;max=$1};sum+=$1;if($1&amp;gt;max)max=$1;if($1&amp;lt;min)min=$1} END {if(NR&amp;gt;0) printf "Total Average: %.6f msec\nTotal Max:     %.6f msec\nTotal Min:     %.6f msec\n", sum/NR, max, min; else print "Failed to capture."}'&lt;/span&gt; /tmp/lazy_runs.txt&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  📊 3. Results
&lt;/h2&gt;

&lt;p&gt;The chart below provides an overview of the startup performance measured by each benchmark. Lower values indicate faster startup.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffwe6rl8lp8u16edlhmk0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffwe6rl8lp8u16edlhmk0.png" alt=" " width="799" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The table below includes the measured averages and ranges for each benchmark.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Distro&lt;/th&gt;
&lt;th&gt;Method A&lt;br&gt;(hyperfine)&lt;/th&gt;
&lt;th&gt;Method B&lt;br&gt;(vim-startuptime)&lt;/th&gt;
&lt;th&gt;Method C&lt;br&gt;(lazy.nvim)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vanilla Neovim&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;18.4 ± 0.2 ms&lt;br&gt;&lt;small&gt;17.7–19.0 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;10.2 ms&lt;br&gt;&lt;small&gt;9.9–10.4 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SnaxVim&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;22.0 ± 0.7 ms&lt;/strong&gt;&lt;br&gt;&lt;small&gt;17.5–23.3 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;11.0 ms&lt;/strong&gt;&lt;br&gt;&lt;small&gt;10.4–12.4 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;14.2 ms&lt;/strong&gt;&lt;br&gt;&lt;small&gt;12.9–18.6 ms&lt;/small&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NvChad&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;23.6 ± 0.6 ms&lt;br&gt;&lt;small&gt;22.2–25.2 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;14.1 ms&lt;br&gt;&lt;small&gt;13.3–15.6 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;16.8 ms&lt;br&gt;&lt;small&gt;15.7–21.4 ms&lt;/small&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LazyVim&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;31.9 ± 1.0 ms&lt;br&gt;&lt;small&gt;30.1–37.7 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;20.7 ms&lt;br&gt;&lt;small&gt;17.8–23.2 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;26.6 ms&lt;br&gt;&lt;small&gt;24.6–47.6 ms&lt;/small&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AstroNvim&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;46.0 ± 2.4 ms&lt;br&gt;&lt;small&gt;43.2–67.5 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;36.7 ms&lt;br&gt;&lt;small&gt;34.2–39.7 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;43.3 ms&lt;br&gt;&lt;small&gt;40.7–46.4 ms&lt;/small&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;kickstart.nvim&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;82.3 ± 1.2 ms&lt;br&gt;&lt;small&gt;79.1–85.3 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;59.6 ms&lt;br&gt;&lt;small&gt;55.8–65.7 ms&lt;/small&gt;
&lt;/td&gt;
&lt;td&gt;N/A&lt;sup id="fnref3"&gt;3&lt;/sup&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;
  Raw benchmark output
  &lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;hyperfine &lt;span class="nt"&gt;--min-runs&lt;/span&gt; 100 &lt;span class="nt"&gt;--warmup&lt;/span&gt; 10 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="go"&gt;"nvim +qa" \
"NVIM_APPNAME=SnaxVim nvim +qa" \
"NVIM_APPNAME=AstroNvim nvim +qa" \
"NVIM_APPNAME=kickstart.nvim nvim +qa" \
"NVIM_APPNAME=LazyVim nvim +qa" \
"NVIM_APPNAME=NvChad nvim +qa"
Benchmark 1: nvim +qa
  Time (mean ± σ):      18.4 ms ±   0.2 ms    [User: 11.5 ms, System: 5.5 ms]
  Range (min … max):    17.7 ms …  19.0 ms    132 runs

Benchmark 2: NVIM_APPNAME=SnaxVim nvim +qa
  Time (mean ± σ):      22.0 ms ±   0.7 ms    [User: 14.1 ms, System: 6.3 ms]
  Range (min … max):    17.5 ms …  23.3 ms    137 runs

Benchmark 3: NVIM_APPNAME=AstroNvim nvim +qa
  Time (mean ± σ):      46.0 ms ±   2.4 ms    [User: 33.0 ms, System: 10.3 ms]
  Range (min … max):    43.2 ms …  67.5 ms    100 runs

Benchmark 4: NVIM_APPNAME=kickstart.nvim nvim +qa
  Time (mean ± σ):      82.3 ms ±   1.2 ms    [User: 63.2 ms, System: 17.3 ms]
  Range (min … max):    79.1 ms …  85.3 ms    100 runs

Benchmark 5: NVIM_APPNAME=LazyVim nvim +qa
  Time (mean ± σ):      31.9 ms ±   1.0 ms    [User: 21.8 ms, System: 8.4 ms]
  Range (min … max):    30.1 ms …  37.7 ms    100 runs

Benchmark 6: NVIM_APPNAME=NvChad nvim +qa
  Time (mean ± σ):      23.6 ms ±   0.6 ms    [User: 15.7 ms, System: 6.5 ms]
  Range (min … max):    22.2 ms …  25.2 ms    106 runs

Summary
  nvim +qa ran
    1.19 ± 0.04 times faster than NVIM_APPNAME=SnaxVim nvim +qa
    1.28 ± 0.04 times faster than NVIM_APPNAME=NvChad nvim +qa
    1.73 ± 0.06 times faster than NVIM_APPNAME=LazyVim nvim +qa
    2.50 ± 0.13 times faster than NVIM_APPNAME=AstroNvim nvim +qa
    4.46 ± 0.09 times faster than NVIM_APPNAME=kickstart.nvim nvim +qa
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;d &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt; SnaxVim AstroNvim kickstart.nvim LazyVim NvChad&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="gp"&gt;  echo "=== $&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;d:-Vanilla Neovim&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt;&lt;span class="s2"&gt;"; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;  NVIM_APPNAME=$&lt;/span&gt;&lt;span class="s2"&gt;d vim-startuptime -vimpath nvim -count 100 -script | head -n 8 | grep "&lt;/span&gt;Total&lt;span class="s2"&gt;"; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;span class="go"&gt;done
=== Vanilla Neovim ===
Total Average: 10.187930 msec
Total Max:     10.385000 msec
Total Min:     9.876000 msec
=== SnaxVim ===
Total Average: 10.951630 msec
Total Max:     12.351000 msec
Total Min:     10.382000 msec
=== AstroNvim ===
Total Average: 36.675830 msec
Total Max:     39.715000 msec
Total Min:     34.211000 msec
=== kickstart.nvim ===
Total Average: 59.649840 msec
Total Max:     65.697000 msec
Total Min:     55.834000 msec
=== LazyVim ===
Total Average: 20.696580 msec
Total Max:     23.166000 msec
Total Min:     17.756000 msec
=== NvChad ===
Total Average: 14.090530 msec
Total Max:     15.648000 msec
Total Min:     13.320000 msec
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;d &lt;span class="k"&gt;in &lt;/span&gt;SnaxVim AstroNvim LazyVim NvChad&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="gp"&gt;  echo "=== $&lt;/span&gt;d &lt;span class="o"&gt;===&lt;/span&gt;&lt;span class="s2"&gt;"; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;  rm -f /tmp/lazy_runs.txt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;  for i in {1..100};&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;do &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;    NVIM_APPNAME=$&lt;/span&gt;&lt;span class="s2"&gt;d nvim -c "&lt;/span&gt;autocmd User LazyVimStarted lua &lt;span class="nb"&gt;local &lt;/span&gt;h, l &lt;span class="o"&gt;=&lt;/span&gt; pcall&lt;span class="o"&gt;(&lt;/span&gt;require, &lt;span class="s1"&gt;'lazy'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;local &lt;/span&gt;f &lt;span class="o"&gt;=&lt;/span&gt; io.open&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/tmp/lazy_runs.txt'&lt;/span&gt;, &lt;span class="s1"&gt;'a'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;if &lt;/span&gt;f and h &lt;span class="k"&gt;then &lt;/span&gt;f:write&lt;span class="o"&gt;(&lt;/span&gt;tostri
&lt;span class="gp"&gt;ng(l.stats().startuptime) .. '\n');&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;f:close&lt;span class="o"&gt;()&lt;/span&gt; end&lt;span class="p"&gt;;&lt;/span&gt; vim.cmd&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'qa'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;  done;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;  awk '{if(NR==1){min=$&lt;/span&gt;&lt;span class="s2"&gt;1;max=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;};sum+=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;;if(&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;max)max=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;;if(&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;min)min=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;} END {if(NR&amp;gt;0) printf "&lt;/span&gt;Total Average: %.6f msec&lt;span class="se"&gt;\n&lt;/span&gt;Total Max:     %.6f msec&lt;span class="se"&gt;\n&lt;/span&gt;Total Min:     %.6f msec&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;", sum/NR, max, min; else print "&lt;/span&gt;Failed to capture.&lt;span class="s2"&gt;"}' /tmp/lazy_runs.txt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;span class="go"&gt;done
=== SnaxVim ===
Total Average: 14.243575 msec
Total Max:     18.558509 msec
Total Min:     12.912106 msec
=== AstroNvim ===
Total Average: 43.304165 msec
Total Max:     46.438125 msec
Total Min:     40.733614 msec
=== LazyVim ===
Total Average: 26.630609 msec
Total Max:     47.604416 msec
Total Min:     24.621206 msec
=== NvChad ===
Total Average: 16.785274 msec
Total Max:     21.369776 msec
Total Min:     15.704555 msec
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;p&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📝 4. Summary
&lt;/h2&gt;

&lt;p&gt;SnaxVim was the fastest among the tested distributions in all three benchmarks, outperforming every other distribution in each applicable measurement.&lt;br&gt;
Its advantage over NvChad ranged from approximately 7% to 22%, depending on the measurement method.&lt;/p&gt;

&lt;p&gt;LazyVim ranked third overall, while AstroNvim and kickstart.nvim recorded the highest startup times.&lt;br&gt;
In the benchmarks that allowed a direct comparison, the distribution ranking was consistent: SnaxVim was followed by NvChad, LazyVim, AstroNvim, and kickstart.nvim.&lt;/p&gt;

&lt;p&gt;The three methods measure different parts of the startup process, so their absolute values should not be compared directly. However, the consistent results across the available measurements suggest that SnaxVim's performance was not specific to a single benchmarking approach.&lt;/p&gt;

&lt;p&gt;If fast startup is important to your Neovim workflow, consider giving SnaxVim a try.&lt;/p&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/SnaxVim/SnaxVim" rel="noopener noreferrer"&gt;https://github.com/SnaxVim/SnaxVim&lt;/a&gt;&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;In this article, "Neovim distro" is used broadly to include preconfigured Neovim setups and starter templates.&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;"Core Configuration Repository" refers to the separate repository or repositories that provide the core configuration framework for a starter template. "N/A" indicates that the configuration is self-contained.&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;lazy.nvim startup statistics were not available for kickstart.nvim because it does not use lazy.nvim as its plugin manager.&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>neovim</category>
      <category>productivity</category>
      <category>performance</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>🚀 SnaxVim – A Minimal, Blazingly Fast Neovim Setup (Only 10 Plugins Included)</title>
      <dc:creator>glmlm</dc:creator>
      <pubDate>Thu, 12 Jun 2025 12:00:00 +0000</pubDate>
      <link>https://dev.to/glmlm/snaxvim-a-minimal-blazingly-fast-neovim-setup-57cf</link>
      <guid>https://dev.to/glmlm/snaxvim-a-minimal-blazingly-fast-neovim-setup-57cf</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;SnaxVim is a minimal starting point for building your own Neovim setup. It’s aimed at those who want just the essentials for a fast, IDE-like experience — with a startup time that seems noticeably faster than many other distros I’ve tried.&lt;/p&gt;

&lt;p&gt;It includes only 10 well-chosen plugins and avoids layers of abstraction, making it easier to learn and customise — similar in spirit to &lt;em&gt;kickstart.nvim&lt;/em&gt;, but designed to be even more minimal and curated in its plugin selection.&lt;/p&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/SnaxVim/SnaxVim" rel="noopener noreferrer"&gt;https://github.com/SnaxVim/SnaxVim&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Gallery
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwv7kx8odr0d7wa2l8o45.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwv7kx8odr0d7wa2l8o45.png" alt="Diagnostics and Completion" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqdhbmu1r67djpt569ojl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqdhbmu1r67djpt569ojl.png" alt="Debugging" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoytwhrmbvos4bxzk47s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoytwhrmbvos4bxzk47s.png" alt="Fuzzy Finder" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  My Journey to Neovim
&lt;/h2&gt;

&lt;p&gt;Before I started using Neovim, I wasn't even aware of things like LSP or DAP. In VSCode, everything just worked as soon as I installed a few extensions, so I never had to think about how it all fit together. When I tried to turn Neovim into an IDE, I struggled to gather the necessary information. Fortunately, discovering the existence of Neovim Distros helped me a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Most Distros
&lt;/h2&gt;

&lt;p&gt;However, when I tried to introduce Neovim to others, I ran into a different kind of problem.&lt;/p&gt;

&lt;p&gt;Many Neovim Distros deploy their configurations in locations separate from the standard configuration directory. As a result, it's often difficult for beginners to tell whether a particular behaviour comes from Neovim itself or from customisations. On the other hand, there are setups like &lt;em&gt;&lt;a href="https://github.com/nvim-lua/kickstart.nvim" rel="noopener noreferrer"&gt;kickstart.nvim&lt;/a&gt;&lt;/em&gt; that are easy to follow, but the plugins they include tend to be somewhat excessive for the goal of providing just the minimum IDE-like functionality. In addition, their focus on beginner-friendliness often comes at the cost of performance.&lt;/p&gt;

&lt;p&gt;I thought that a setup with a configuration that’s not hidden behind layers of abstraction, a minimal set of plugins to enable IDE-like functionality, and proper use of lazy-loading would be a useful starting point for people new to Neovim. But I wasn’t able to find anything like that, so I decided to create one myself — and that’s how &lt;em&gt;SnaxVim&lt;/em&gt; was born.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plugin Selection Philosophy
&lt;/h2&gt;

&lt;p&gt;SnaxVim selects plugins based on two main criteria: they must be essential for an IDE-like setup and difficult for beginners to configure correctly on their own.&lt;/p&gt;

&lt;p&gt;Some widely used plugins may meet the first criterion but not the second, and are therefore intentionally excluded. &lt;em&gt;&lt;a href="https://github.com/lewis6991/gitsigns.nvim" rel="noopener noreferrer"&gt;gitsigns.nvim&lt;/a&gt;&lt;/em&gt; is a good example: while it’s a common and practical tool for today’s development needs, it works reliably with minimal configuration — often just &lt;code&gt;opts = {}&lt;/code&gt; — and provides immediate visual feedback when active, making it unlikely to cause confusion for beginners.&lt;/p&gt;

&lt;p&gt;Currently, SnaxVim includes 10 plugins, and there are no plans to increase this number. However, I will continue to monitor the maintenance status and alternatives for each plugin and revise the lineup only if a better-maintained or more appropriate plugin emerges for the same purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;If you're interested in Neovim but unsure where to begin, or if you prefer configuring things yourself but would like to leave the selection and upkeep of essential plugins to the community, SnaxVim is intended to be a solid starting point.&lt;/p&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/SnaxVim/SnaxVim" rel="noopener noreferrer"&gt;https://github.com/SnaxVim/SnaxVim&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you find it helpful, I’d appreciate a ⭐ on GitHub!&lt;/p&gt;

</description>
      <category>neovim</category>
      <category>vim</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
