@stephansama
nvim
Article explaining neovim config
interactive bundle visualization
bundle visualization generated using bloat.nvim and Esbuild analyzer
Install directly to neovim config with the following command
git clone https://github.com/stephansama/nvim ~/.config/nvim
or install to a specific folder and invoke the config with the following command
git clone https://github.com/stephansama/nvim ~/.config/stephansamanvim
# then launch neovim with the newly downloaded configuration
NVIM_APPNAME=stephansamanvim nvim
This Neovim configuration is built to be a highly customized and efficient development environment. Here are some of the key features:
- 📦 Plugin Management: Uses
lazy.nvim
for declarative and optimized plugin management, ensuring fast startup times. - 📝 Schema-Driven Configuration: Leverages TypeScript and
zod
to create and enforce schemas for configuration files like key mappings and dashboard shortcuts. This provides strong typing and validation for what would otherwise be plain JSON or Lua tables. - Lua Type-Checking: Utilizes
tstl
to generate Lua from TypeScript, enabling robust type-checking and autocompletion for the Lua configuration within the editor. - 🧩 Modular Structure: The configuration is broken down into logical modules for plugins, LSP settings, key mappings, and utilities, making it easy to manage and extend.
- 🚀 Built-in Tooling: Includes scripts for building schemas, syncing snippets, and other automation tasks, managed via
pnpm
and aMakefile
.
graph TD
A["nvim/"] --> N[".husky/"];
A --> O["ftplugin/"];
A --> P["images/"];
A --> Q["lsp/"];
A --> R["lua/"];
A --> T["snippets/"];
subgraph lua
R --> R1["config/"];
R --> R2["icons/"];
R --> R3["keys/"];
R --> R4["plugins/"];
R --> R5["schemas/"];
R --> R6["utils/"];
end
subgraph plugins
R4 --> R4_1["debug/"];
R4 --> R4_2["editor/"];
R4 --> R4_3["lang/"];
R4 --> R4_4["test/"];
R4 --> R4_5["ui/"];
end
Copyright © 2023-present @stephansama