Modular Structure

Modular Structure

The layout

~/.config/nvim/
├── init.lua                 the entry point — intent only
└── lua/
    └── config/
        ├── options.lua      every vim.opt setting
        ├── keymaps.lua      every mapping
        └── lazy.lua         plugin manager bootstrap (next page)

The modules

lua/config/options.lua holds what used to clutter the top of init.lua:

vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.termguicolors = true
vim.opt.cursorline = true

lua/config/keymaps.lua collects mappings:

vim.keymap.set("n", "<leader>e", vim.cmd.Ex)
vim.keymap.set("n", "<Esc>", "<cmd>nohlsearch<CR>")

The four-line init.lua

vim.g.mapleader = " "

require("config.options")
require("config.keymaps")
vim.cmd("colorscheme hackertheme")

The leader comes first — before any mapping or plugin loads — because mappings capture the leader at the moment they are defined.

require("config.options") walks into lua/, then config/, and loads options.lua. Dots become folders. From here on, growing the config means adding a small file, not scrolling a big one.