A modern, feature-rich Neovim configuration focused on providing a complete development environment. Built with Lua and designed for extensibility.
-
π Performance
- Fast startup with lazy loading and optimized initialization
- Efficient plugin management with Lazy.nvim
- Startup profiling support (AVIM_PROFILE env var)
- Optimized file operations with better error handling
-
π¨ User Interface
- Dynamic theme switching based on time
- Beautiful and functional UI components with Snacks.nvim
- Random Alpha logos/banners
- Winbar with context information (Dropbar)
- Advanced file picker with line number jump support (file:123)
-
π Development
- Advanced LSP integration with buffer-local keymaps
- Modern completion engine with Blink.cmp
- AI coding assistant (CodeCompanion)
- Git integration with conflict resolution
- Database integration with Dbee
- Unified logging system (all logs go to avim.log)
-
π§ Tools & Utilities
- Fuzzy finding with Snacks picker (with preview highlighting)
- File tree with mini.files and NeoTree
- Terminal integration with floating and split options
- REST API client
- Session management with Persisted
- Advanced search and replace with GrugFar
- Multiple cursors support
- Cheatsheet of every mapping, laid out to fit the window (:Cheatsheet, ch)
-
βοΈ Configuration
- Type checking and linting
- Automatic package management with Mason
- Extensive customization options
- Well-documented codebase with type annotations
- Custom update system (:AnoUpdate, :AnoCheckUpdate, :AnoVersion)
- Neovim >= 0.12.0
- Git >= 2.19.0
- A Nerd Font (Optional but recommended)
- For optional features:
- Node.js >= 20.18
- Python >= 3.10
- Go >= 1.23
- Rust ( >= latest stable)
Neovim 0.12 is a hard requirement, not a recommendation: the config uses the native
vim.lsp.config/vim.lsp.enableAPI,vim.lsp.codelens.enable, and Mason 2.0 patterns, none of which exist on earlier releases.:checkhealth avimreports an error below that floor.
The installer provisions the toolchain with mise (
neovim,node,python,rust,luajit,tree-sitter,ripgrep,fd,fzf) and installs Python packages (pynvim) with uv. It also adds the activation line for your shell so the tools are onPATH. Pass--no-install-dependenciesto manage all of that yourself.
bash <(curl -s https://raw.githubusercontent.com/AnoRebel/AnoNvim/main/.install/installer.sh)Options:
-h, --help Print this help message
-l, --local Install local copy of AnoNvim
-y, --yes Automatic yes to prompts
--overwrite Replace an existing AnoNvim directory/link without asking
--no-install-dependencies Skip dependency installation (mise toolchains, uv packages)After installation:
- Run
avimto start AnoNvim - Initial setup will install required plugins
rest.nvim is installed as a LuaRock. Its HTTP parser needs the
luarocks-build-treesitter-parser build backend, and LuaRocks only looks for
backends in its own tree. If the rock build fails with
module 'luarocks.build.treesitter-parser' not found, install the backend where
LuaRocks looks, then rebuild the plugin:
ROOT="${XDG_DATA_HOME:-$HOME/.local/share}/anonvim/lazy-rocks"
luarocks --tree "$ROOT/hererocks" --lua-version 5.1 install luarocks-build-treesitter-parserThen run :Lazy build rest.nvim inside AnoNvim.
Try AnoNvim without touching your host setup. The image uses mise to provision Neovim and the toolchains plugins need at build time (Node, Python, Rust, LuaJIT, tree-sitter), so it works the same on any host.
docker build -t anonvim .
docker run -it --rm anonvim
# or work on a real project inside the container
docker run -it --rm -v "$PWD:/work" -w /work anonvimNeovim tracks latest and Node tracks lts by default. Pin them for a reproducible image:
docker build --build-arg NVIM_VERSION=0.12.4 --build-arg NODE_VERSION=24 -t anonvim .The build fails loudly if the resolved Neovim is older than the required 0.12.
.
βββ init.lua # Main entry point
βββ lua/avim
β βββ core # Core functionality
β β βββ defaults.lua # Default settings
β β βββ init.lua # Core initialization
β β βββ log.lua # Logging system
β β βββ settings.lua # Neovim settings
β βββ commands.lua # Commands and autocommand definitions
β βββ health.lua # Health check
β βββ icons.lua # Icon definitions
β βββ lazy.lua # Plugin management
β βββ update.lua # Update system
β βββ plugins # Plugin configurations
β β βββ ai.lua # AI related configurations
β β βββ bufferline.lua # Bufferline(top bar) configurations
β β βββ blink.lua # Code completion (blink.cmp) configurations
β β βββ database.lua # Database configurations
β β βββ editor.lua # Editor configurations
β β βββ explorer.lua # File explorer configurations
β β βββ extras.lua # Extra plugin configurations
β β βββ formatting.lua # Code formatting configurations
β β βββ git.lua # Git configurations
β β βββ lsp.lua # LSP configurations
β β βββ lualine.lua # Lualine(bottom bar) configurations
β β βββ rest.lua # Rest client configurations
β β βββ search.lua # Search and Replace configurations
β β βββ snacks.lua # Folke's Snacks configurations
β β βββ themes.lua # Themes configurations
β β βββ treesitter.lua # Treesitter configurations
β β βββ ... # Other plugin configurations
β β βββ ui.lua # UI components and configurations
β βββ utilities # Utility functions
βββ patches # Local patches applied to third-party plugins
βββ Dockerfile # Containerized AnoNvim (mise-provisioned)Some plugins carry local fixes that upstream has not adopted. Rather than editing the plugin in place β which is lost on
the next update β each fix lives as a patch in patches/, applied by lua/avim/utilities/patch.lua.
lazy.nvim checks a plugin out with git checkout, which refuses to run while a tracked file has local changes, so every
patch is reversed before lazy installs, updates or restores and re-applied once the operation finishes. A build hook
re-applies it for fresh clones, so a plugin is never left unpatched after :Lazy sync.
Patching is idempotent, and a patch that no longer applies is refused with an error rather than written as conflict
markers, since a Lua file containing <<<<<<< would break startup far from the cause. If you see such an error, the
plugin is left at pristine upstream and the patch needs rebasing against the new source.
To add one:
# make your edit inside the plugin checkout, then:
git -C ~/.local/share/anonvim/lazy/<plugin> diff > patches/<plugin>.patchThen add build = require("avim.utilities.patch").builder("<plugin>") to its spec.
AnoNvim provides multiple ways to explore keybindings:
-
Keymaps Search:
Snacks.picker.keymaps()or<leader>fk
-
Which Key:
- Press
<leader>to see available key bindings - Context-aware key suggestions
- Press
Note: <leader> key is mapped to the Space key
π§ AI Assistance
- CodeCompanion - AI coding assistant
π Editor Enhancement
π¨ User Interface
- Dropbar - VS Code-like winbar
- Bufferline - Buffer line
- Lualine - Status line
- NeoTree - File explorer
- mini.files - Vim-style file explorer
- Markview - In-buffer markdown preview
- Helpview - In-buffer help rendering
- Snacks - Fuzzy finder
π οΈ Development Tools
- LSP - Language Server Protocol
- Treesitter - Syntax parsing and highlighting
- None-LS - Language Server Protocol (extras)
- Lazy - Plugin management
- Mason - Package management
- Rest APIs - REST client
- Persisted - Session management
- Easy-Dotnet - .NET project tooling
π¦ Git Integration
Screenshots (Click to expand)
Fuzzy finder β snacks.nvim backs vim.ui.select, so every list (files, buffers, sessions, code actions) is searchable.
Cheatsheet β every mapping in theme-coloured cards that reflow to the window. A tab per section filters the sheet: press its key, cycle with <Tab>, or click it (:Cheatsheet, <leader>ch).
Completion and signature help β blink.cmp with LSP items first, signature float in the shared style.
Diagnostics β inline virtual text and the Trouble list, in one theme-driven float style.
Git diff view β diffview.nvim for staging and reviewing changes.
Markdown preview β markview.nvim renders markdown in the buffer.
HTTP client β rest.nvim runs requests straight from .http files.
Sessions β per-directory, per-git-branch session save and restore.
Undo tree β browse and jump through edit history.
Multiple cursors β edit many places at once.
AI chat β CodeCompanion, with the local agent CLI as backend.
Built upon the great works of:
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE for more details.











