init.nvim

April 19, 2026 ยท View on GitHub

Main screenshot

Why?

Modern Vim distributions are really huge and bloated with way too many fancy features that you won't ever use or need, for example directory trees like Nerd tree, you don't need a tree, you can view a project structure with fzf which is faster and has search. Another example is ThinkVim has a separate extension for formatting while also having ALE which can do that as well, this double functionality is very common, thats one of the things this distro avoids, KISS!

Features

  • Lua-first Neovim config
  • Native LSP powered by Neovim, Mason, Conform, and Blink
  • Lazy-managed plugins with modular config under lua/config/ and lua/plugins/
  • Ayu-based theme with automatic light/dark switching, custom floats, and a custom statusline
  • Modern Snacks-based picker and scrolling workflow
  • Noice-powered command line and notifications
  • Simple, intuitive shortcuts

Supported Languages

Built-in LSP and formatter setup is included for Bash, C/C++, CSS, HTML, JSON, Lua, Python, TypeScript, XML, and YAML. Mason installs the configured language servers and formatters automatically on startup.

Requirements

  • Linux (not tested on other platforms)
  • Neovim 0.11+
  • Properly set up environment

Setup

To check if your current environment is correctly set up run :CheckHealth.

Environment

  • python3: pip3 install --user pynvim
  • javascript: npm install -g neovim

Tools

Most language servers and formatters are installed automatically through Mason.

Installation

After installing the requirements:

  • git clone https://github.com/Blacksuan19/init.nvim ~/.config/nvim
  • Start nvim and it will do the rest
  • press enter if there are any errors (don't worry its fine)

Plugins

Plugins are managed by lazy.nvim, with language servers and formatters handled by Mason.

PluginFunctionality
lazy.nvimplugin management
blink.cmpcompletion UI
conform.nvimformatting
gitsigns.nvimgit signs in the gutter
mason.nvimexternal tool management
mason-lspconfig.nvimLSP server installation bridge
mason-tool-installer.nvimauto-installs tools on startup
mini.nvimicons, comments, move, surround
nvim-lspconfigLSP server configs
alpha-nvimstart screen
neovim-ayucolorscheme
noice.nvimcommand line and message UI
nvim-notifynotifications
rainbow-delimiters.nvimrainbow bracket highlighting
friendly-snippetsVS Code-style snippet collection for Blink
blink-cmp-conventional-commitsconventional commit suggestions for Blink
blink-cmp-tmuxtmux pane text as a Blink completion source
blink-cmp-wordsEnglish words and synonyms for Blink
snacks.nvimindent guides, picker, smooth scrolling
auto-dark-mode.nvimautomatic theme switching
MatchTagmatching HTML/XML tags
vim-fugitivebest git integration around
tmux-navigatorseamless movement between Vim and tmux panes
vim-eunuchsome common Linux commands

Keyboard shortcuts

To learn the default Vim shortcuts run Tutor and or checkout this vim adventures.

Essentials

Mappingfunctionality
;commands key
,leader key
leader + wsave changes
leader + esync plugins with Lazy
Enterenter empty line in normal mode
S-Enterenter empty line above
F2trim trailing whitespace
F6open the start screen

Visual Mode Essentials

Mappingfunctionality
ctrl + jmove selected text to bottom
ctrl + kmove selected text to top
ctrl + hmove selected text to the left
ctrl + lmove selected text to the right

ctrl + hjkl navigation also supports tmux panes.

Mappingfunctionality
leader + qconfirm and delete current buffer
\alias for leader + q
ctrl + qconfirm and quit Neovim
ctrl + lmove to the split on the right
ctrl + kmove the split above
ctrl + jmove to the split on below
ctrl + hmove the split to the left
Tabswitch to the next buffer(normal mode)
S-Tabswitch to the previous buffer

IDE Features

Mappingfunctionality
ORorganize imports
leader + arun code action
leader + sformat file with available formatter
leader + rnrename globally
leader + jdjump to definition
leader + jyjump to type definition
leader + jijump to implementation
leader + jrjump to references
Kshow current symbol documentation
]gnext diagnostic
[gPrevious diagnostic

Picker windows

Mappingfunctionality
leader + ffiles viewer
leader + cshow editor commands
leader + /search in current folder files
leader + shsearch / history
leader + bshow open buffers
leader + tsearch current buffer lines
F1show keyboard shortcuts for current mode

Git

Mappingfunctionality
leader + gdgit diff split
leader + gcgit commits
leader + gbgit blame
leader + gsgit status picker

Custom commands

CommandFunctionality
Formatformat file with any available formatter
ORorganize imports
Filesopen the file picker
Rggrep project files
Bufferslist open buffers
Commandslist editor commands
BTagssearch current buffer lines
Commitsshow git commits

Customizations

This config is organized as a small Lua codebase rather than a single init file. Core editor behavior lives under lua/config/, while plugin declarations and plugin-specific setup live under lua/plugins/. That makes it easier to change one part of the setup without digging through unrelated settings.

If you want to customize behavior, the most useful places to look are:

  • lua/config/options.lua for editor options

  • lua/config/keymaps.lua for global mappings

  • lua/config/autocmds.lua for editor automation

  • lua/config/theme.lua and lua/config/statusline.lua for appearance

  • lua/plugins/*.lua for plugin choices and plugin-specific behavior

  • Disabling Plugins: remove or edit the relevant spec under lua/plugins/ and adjust any matching config under lua/config/

  • Managing LSP tools: use :Mason, :MasonToolsInstall, and :MasonToolsUpdate

  • Formatting: use :Format to format the current buffer with Conform

  • Adding Bookmarks: to add bookmarks to the start page, find the Alpha start screen config in lua/plugins/alpha.lua

  • Reloading config: a full Neovim restart is still the most reliable way to apply changes across this Lua config, especially plugin spec edits

For deeper customization, read through the relevant Lua module and then check the upstream plugin documentation for any extra options you want to enable.

Demos

Project files with fuzzy finder

fzf preview

Rg preview

Git Status

git status

workflow demo

Workflow Demo

Credits

All the Credit goes to the Neovim team for making most of the extensions possible and better (async), and to all the plugins developers, and the hackers who spend time Finding good shortcuts and tricks to make this an even more superb experience.