Skip to content
lcfdPublic

About

A configuration for Neovim that inspires hope and resolution 🔥

Topics

Resources

Stars

20 stars

Watchers

1 watching

Forks

Repository files navigation

NaryaVim logo

NaryaVim

A configuration for Neovim that inspires
hope and resolution 🔥

A fast, hand-crafted Neovim setup for full-stack web development:
Django · React · Tailwind CSS · HTMX · Alpine.js, with first-class Python and TypeScript support.

Neovim 0.11+ Made with Lua lazy.nvim License Last commit

screenshot-1

Table of contents

Why

I wanted a config that was truly mine and that would help me be fast and accurate.

Neovim configurations are really personal. I hope this repository can be more of a source of inspiration than a complete replacement.

For that purpose, there are already excellent distributions such as:

This configuration is intended to be used primarily with:

✨ Features

🧠 Code intelligence

  • Native LSP: servers are configured with Neovim 0.11's built-in vim.lsp.config / vim.lsp.enable API. No wrapper layers.
  • Zero-setup tooling: Mason installs every language server and formatter, plus the tree-sitter CLI, the first time you start Neovim. Servers attach to open buffers as soon as their install finishes.
  • Fast completion: blink.cmp with LSP, paths, snippets, signature help and [[wikilink]] completion.
  • Snippets: LuaSnip + friendly-snippets, plus custom snippets for Django templates, HTMX, Django Ninja and react-hook-form. Django snippets are available in Python files, and HTML snippets in JSX, Astro and Vue.
  • Formatting: conform.nvim with ruff, prettier, stylua and gofmt, falling back to the LSP.
  • Docstrings: generate function and class docs with neogen (JSDoc/TSDoc for JS/TS).
  • Treesitter: the main-branch rewrite of nvim-treesitter for highlighting and indentation, with 30+ parsers installed automatically.
  • Structural editing: text objects and motions for scopes, functions, classes, loops, arguments and calls.

🔭 Navigation and search

  • snacks.nvim pickers for files, recent files, live grep, buffer lines, diagnostics, TODOs and every LSP location (definitions, references, implementations, incoming/outgoing calls).
  • Smart symbol outline: one picker for document symbols. It filters out React hook and callback noise and shows Markdown headings with per-level icons.
  • Harpoon 2: pin your working set and jump to it with <leader>1–9. The pinned files also show in the statusline.
  • oil.nvim to edit the filesystem like a buffer, plus a tree explorer.
  • nvim-spectre for project-wide search and replace.

🌱 Git

  • lazygit in a floating window, including per-file history.
  • gitsigns in the gutter and inline blame.
  • A dashboard that shows your assigned GitHub issues and PRs (via gh) and git status.

🧪 Python and testing

  • ruff for linting and formatting, plus ty and pyright for type checking.
  • Switch virtual environments with venv-selector.
  • Run pytest suites from the editor with neotest. It uses your project's .venv automatically.

📝 Notes and Zettelkasten

  • obsidian.nvim integration with workspaces, daily notes and templates.
  • In-buffer Markdown rendering with render-markdown.nvim, plus smart bullets and centered writing.
  • [[wikilink]] completion that works even for loose .md files outside any vault or repository.
  • Graph view (:Graph): Obsidian's graph, in your terminal (braille renderer) or in your browser. It supports search filters, color groups, local graphs, and live updates as you edit. Read more →

🎁 Built-in extras

  • 🎵 MPD music player: a full MPD client with a queue, cover art, playlist management and now-playing info in the statusline. It talks to MPD directly, so you don't need mpc. Read more →
  • 🎲 Solo RPG toolkit: a dice roller (exploding dice, keep-highest/lowest, advantage, fudge dice…) and random tables written in Markdown. It turns on when the working directory contains an rpg.toml file.

🎨 Interface

  • The Tokyo Night theme (night style).
  • noice.nvim command palette, lualine global statusline, and floating file labels with incline.
  • A dashboard, zen mode, indent guides, scope highlighting and notifications, all from snacks.nvim.
  • which-key lists every shortcut, so you never have to memorize them.

🗣️ Languages

Area Language servers Formatter
Python / Django ruff, ty, pyright ruff
JavaScript / TypeScript / React vtsls, eslint prettier
HTML / Django templates html, tailwindcss prettier
CSS / Tailwind tailwindcss prettier
Astro / Vue astro, vtsls prettier
Markdown marksman prettier
Lua lua_ls (+ lazydev) stylua
JSON / YAML / TOML jsonls, yamlls, taplo prettier (JSON)
Docker dockerls, docker_compose_language_service
Shell / SQL / C bashls, sqlls, clangd
Go gofmt

To add a server, add it to the servers table in lua/plugins/lsp.lua.

📋 Requirements

Requirement Why
Neovim ≥ 0.11 Native LSP config API and nvim-treesitter main
git, a C compiler, make Plugin installation, Treesitter parsers, LuaSnip regex support
node + npm Most language servers and prettier, installed by Mason
python3 Python language servers installed by Mason
ripgrep Live grep and :grep
A Nerd Font Icons (JetBrainsMono Nerd Font is a good choice)
Optional: lazygit, gh Git UI and the GitHub dashboard
Optional: MPD, ImageMagick Music player and cover art

Note

You don't need to install the tree-sitter CLI yourself: Mason installs it on first start. If you'd rather use your own, make sure the CLI is on your $PATH. On macOS that's brew install tree-sitter-cli; the plain tree-sitter formula only ships the library.

📦 Install

  1. Back up your current config (if you have one):

    mv ~/.config/nvim ~/.config/nvim.bak
    mv ~/.local/share/nvim ~/.local/share/nvim.bak
  2. Clone NaryaVim:

    git clone https://github.com/lcfd/NaryaVim ~/.config/nvim
  3. Start Neovim and let it install the plugins, language servers and parsers. Watch the progress with :Lazy and :Mason.

  4. Check your setup with :checkhealth.

Step-by-step instructions for each platform are in the Install wiki page.

⌨️ Keymaps

The leader key is <Space>. Press it and wait: ⭐ which-key lists every available shortcut.

Keys Action
<leader><space> Find files
<leader>fw / <leader>fW Grep the project / grep the word under the cursor
<leader>fo / <leader>fi Recent files / search the current buffer
<leader>p / <leader>o File explorer / Oil
- / = / <leader>1–9 Harpoon: add file / menu / jump
gd gr gi gy Definition, references, implementation, type definition
<leader>ds / <leader>dS Document / workspace symbols
<leader>rn / <leader>ca Rename / code action
<leader>ff Format the buffer
<leader>gg Lazygit
<leader>z Zen mode
<leader>Gg / <leader>Gl Global / local note graph
<leader>mm MPD command center
<C-\> Floating terminal

The full list is in the Keystrokes wiki page.

🔧 Customization

NaryaVim is meant to be forked and bent to your will. Every concern lives in its own file under lua/plugins/, and lazy.nvim loads them automatically: to add a plugin, drop a new spec file in that folder.

Machine-specific settings, like your Obsidian vaults, go in a git-ignored lua/options.lua. It's optional, and everything works without it. See the Options wiki page.

🗂️ Project structure

~/.config/nvim
├── init.lua            # Entry point: options → plugins → keymaps → commands
├── lua
│   ├── config/         # Core: options, keymaps, user commands, lazy.nvim bootstrap
│   ├── plugins/        # One file per concern (lsp, completion, ui, git, testing, …)
│   ├── custom/         # Home-made modules: graph view, MPD client, RPG toolkit, …
│   └── utils/          # Small helpers
└── snippets/           # Custom VS Code-style snippets

📚 Documentation

Detailed guides are in the wiki:

🤝 Contributing

This is a personal configuration, but issues, ideas and pull requests are welcome. If something breaks on your machine, please open an issue.

Lua code is formatted with stylua (stylua lua/).

📄 License

Released under the GPL-3.0 License.

Thanks to the authors of all the plugins that make this configuration possible, and especially to folke for lazy.nvim, snacks.nvim and friends.

About

A configuration for Neovim that inspires hope and resolution 🔥

Topics

Resources

Stars

20 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages