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}.luaWindows (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"