nvim/
├── init.lua # Ponto de entrada - orquestra os módulos
├── lua/
│ ├── core/
│ │ ├── options.lua # Opções globais do Neovim
│ │ ├── keymaps.lua # Keymaps globais (não específicos de plugins)
│ │ ├── autocmds.lua # Autocomandos globais
│ │ └── plugins.lua # ⚠️ ÚNICO ponto de vim.pack.add
│ ├── plugins/ # Configurações de plugins
│ │ ├── telescope.lua
│ │ ├── treesitter.lua
│ │ ├── lualine.lua
│ │ └── ...
│ └── lsp/
│ ├── init.lua # Inicialização do LSP
│ ├── capabilities.lua # Capabilities compartilhadas
│ ├── on_attach.lua # Função on_attach centralizada
│ ├── keymaps.lua # Keymaps globais de LSP
│ └── servers/ # Configurações individuais de servidores
│ ├── intelephense.lua
│ ├── phpactor.lua
│ ├── tailwindcss.lua
│ └── ...
└── plugin/ # ⚠️ DEPRECATED - pode ser removida
core/: Configurações fundamentais do Neovim (options, keymaps globais, autocmds)plugins/: Apenas configuração/setup de plugins (semvim.pack.add)lsp/: Toda a lógica relacionada ao LSP
core/plugins.luaé o ÚNICO arquivo que pode chamarvim.pack.add- Nenhum outro arquivo deve declarar plugins
- Isso evita duplicação e facilita manutenção
capabilitiescompartilhadas para todos os servidoreson_attachcentralizado com keymaps de LSP- Um arquivo por servidor em
lsp/servers/ - Sem lógica de plugin misturada com LSP
init.lua
├── core/options.lua
├── core/keymaps.lua
├── core/autocmds.lua
├── core/plugins.lua (vim.pack.add)
├── plugins/*.lua (configurações)
└── lsp/init.lua
vim.pack.add({
{ src = "https://github.com/usuario/plugin.nvim" },
}, { load = true })-- lua/plugins/meu-plugin.lua
require("meu-plugin").setup({
-- configurações
})O arquivo será carregado automaticamente pelo init.lua.
-- lua/lsp/servers/meu-lsp.lua
return {
settings = {
-- configurações específicas
},
}Editar lua/lsp/init.lua e adicionar "meu-lsp" na lista enabled_servers.
A pasta plugin/ antiga pode ser removida ou renomeada para backup:
# Fazer backup
mv ~/.config/nvim/plugin ~/.config/nvim/plugin.backup
# Ou remover (após verificar que tudo funciona)
rm -rf ~/.config/nvim/plugin- Estrutura de pastas criada
-
init.luacriado -
core/plugins.luacentralizado - Options, keymaps e autocmds migrados
- Estrutura LSP completa
- Configurações de plugins migradas
- Testar configuração
- Remover/backup da pasta
plugin/antiga
- Não usar
vim.pack.addfora decore/plugins.lua - Manter configurações de plugins separadas (um arquivo por plugin)
- Usar
on_attachpadrão a menos que o servidor precise de customização - Documentar configurações não óbvias com comentários
- Manter keymaps organizados por contexto (core, plugins, lsp)