Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Neovim
  3. vimpeccable

vimpeccable

MITLua

A Neovim plugin that provides a Lua API for mapping keys directly to Lua code, enabling a fully Lua-based configuration.

GitHubGitHub
348 stars5 forks0 contributors

What is vimpeccable?

Vimpeccable is a Neovim plugin that allows you to write your Neovim configuration entirely in Lua by providing a Lua API for key mapping. It solves the problem of needing Vimscript for keybindings in `init.lua`, enabling a pure Lua setup with features like duplicate map detection and runtime reloading.

Target Audience

Neovim users who want to migrate their configuration from Vimscript to Lua, particularly those using Neovim 0.5+ and seeking a more maintainable, modern config approach.

Value Proposition

Developers choose Vimpeccable because it offers a seamless transition to Lua-based configs with safety features like duplicate detection, full support for Vim mapping semantics, and utilities for runtime reloading without restarting Neovim.

Overview

Neovim plugin that allows you to easily map keys directly to lua code inside your init.lua

Use Cases

Best For

  • Migrating a Vimscript-based .vimrc to a pure Lua init.lua
  • Writing Neovim key mappings directly in Lua without Vimscript
  • Preventing accidental keymap conflicts in complex configurations
  • Reloading Neovim config changes at runtime without restarting
  • Creating buffer-local keybindings with Lua functions
  • Defining custom Vim commands implemented in Lua

Not Ideal For

  • Users who prefer to keep their Neovim configuration entirely in Vimscript without migrating to Lua.
  • Teams using Neovim versions below 0.5, as Vimpeccable requires Neovim 0.5+.
  • Developers looking for a plug-and-play key mapping solution with zero setup; Vimpeccable requires manual integration for features like runtime reloading.
  • Projects that rely heavily on Vimscript autocmds or advanced scripting not covered by Vimpeccable's mapping-focused API.

Pros & Cons

Pros

Vimscript-like API in Lua

Mirrors Vim's mapping commands such as nnoremap, allowing straightforward translation of existing Vimscript configs to Lua, as demonstrated in the quick start example.

Duplicate Map Prevention

By default, rejects duplicate keymaps to avoid accidental overrides, with an override option for intentional changes, enhancing config safety.

Runtime Reloading Support

Provides utilities like vimp.unmap_all() to facilitate reloading Lua configurations without restarting Neovim, useful for iterative tweaks.

Buffer and Command Mapping

Supports buffer-local maps and allows defining custom Vim commands with Lua functions, offering flexibility for different editing scenarios.

Cons

Neovim 0.5+ Requirement

Only compatible with Neovim 0.5 and above, excluding users on older versions or other Vim implementations.

Dependency on vim-repeat

Repeatable maps feature requires the vim-repeat plugin, adding an external dependency for full functionality.

Complex Reloading Setup

Achieving runtime reloading necessitates additional code, such as managing Lua namespaces, which can be cumbersome for new users.

Limited Scope

Focuses primarily on key mappings and commands, leaving other Vimscript elements like autocmds to be handled separately, potentially leading to mixed configs.

Frequently Asked Questions

Quick Stats

Stars348
Forks5
Contributors0
Open Issues8
Last commit4 years ago
CreatedSince 2020

Tags

#text-editor#plugin-management#neovim-plugin#neovim#customization#key-mapping#lua-configuration

Built With

N
Neovim
L
Lua

Included in

Neovim20.6k
Auto-fetched 9 hours ago

Related Projects

plenary.nvimplenary.nvim

plenary: full; complete; entire; absolute; unqualified. All the lua functions I don't want to write twice.

Stars3,495
Forks342
Last commit5 months ago
nui.nvimnui.nvim

UI Component Library for Neovim.

Stars2,116
Forks80
Last commit16 days ago
lazydev.nvimlazydev.nvim

Faster LuaLS setup for Neovim

Stars1,568
Forks50
Last commit5 months ago
sqlite.luasqlite.lua

SQLite LuaJIT binding with a very simple api.

Stars570
Forks34
Last commit1 year ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub