Estrutura de Diretórios

Uma configuração modular facilita a manutenção e evita arquivos gigantescos. Abaixo, veja como organizar os arquivos dentro da sua pasta ~/.config/nvim/.

Hierarquia de Pastas

~/.config/nvim/

├── init.lua # Ponto de entrada

├── lua/

│ └── user/

│ ├── init.lua # Carrega os módulos abaixo

│ ├── options.lua # vim.opt

│ ├── keymaps.lua # Atalhos

│ ├── autocmds.lua # Eventos

│ └── lazy.lua # Plugins

└── lazy-lock.json

Sugestão de Organização
Esta estrutura modular é uma das mais adotadas pela comunidade. Ela permite que você encontre erros rapidamente separando o comportamento do editor (options) da lógica de atalhos (keymaps).

Detalhamento dos Arquivos

init.lua

O arquivo mestre. Ele deve ser o mais simples possível.

~/.config/nvim/init.lua
require("user")

lua/user/init.lua

Este arquivo orquestra o carregamento. A ordem aqui é vital para o funcionamento correto do editor.

~/.config/nvim/lua/user/init.lua
require("user.options")
require("user.keymaps")
require("user.autocmds")
require("user.lazy")
A Ordem Importa
As options devem ser carregadas primeiro, seguidas pelos keymaps. Os plugins (lazy) vêm por último, pois podem precisar das opções e atalhos já configurados para funcionar corretamente.

Criar Estrutura Rapidamente

Linux / macOS
mkdir -p ~/.config/nvim/lua/user
touch ~/.config/nvim/init.lua
touch ~/.config/nvim/lua/user/{init,options,keymaps,autocmds,lazy}.lua
Windows (PowerShell)
mkdir -Force $env:LOCALAPPDATA\nvim\lua\user
$files = @("init.lua", "lua/user/init.lua", "lua/user/options.lua", "lua/user/keymaps.lua", "lua/user/autocmds.lua", "lua/user/lazy.lua")
foreach ($file in $files) { New-Item -Path "$env:LOCALAPPDATA\nvim\$file" -ItemType File -Force }

Dica de Verificação

Após criar os arquivos, execute o comando abaixo para garantir que não existam erros de sintaxe ou módulos faltando:

nvim --headless -c "lua print('Estrutura OK')" -c "q"