Arquivo init.lua

O init.lua é o "ponto zero" do seu Neovim. É a partir dele que o editor ganha vida e carrega toda a sua personalização.

O que ele faz?

Ao abrir o Neovim, ele busca por este arquivo no caminho ~/.config/nvim/init.lua. Qualquer código Lua inserido aqui será executado imediatamente no startup.

Atenção
O Neovim aceita apenas um arquivo raiz: init.lua OU init.vim. Se você tiver os dois, poderá haver conflitos ou o editor ignorará um deles.

Navegando pela API Lua

vim.opt — Preferências

Controla o comportamento visual e funcional do editor.

lua
vim.opt.number = true          -- Ativa números de linha
vim.opt.relativenumber = true  -- Números relativos
vim.opt.tabstop = 2           -- Largura do tab

vim.keymap.set — Atalhos

A ferramenta principal para criar seus próprios atalhos.

lua
-- Sintaxe: vim.keymap.set(modo, teclas, ação, opções)

vim.keymap.set("n", "<C-s>", ":w<CR>", { desc = "Salvar" })
vim.keymap.set("n", "<leader>q", ":q<CR>", { desc = "Sair" })

Modos Comuns

"n" Normal"i" Inserção"v" Visual

Exemplo Base Funcional

Abaixo, um exemplo de como o seu init.lua pode começar antes de migrarmos para a estrutura modular.

~/.config/nvim/init.lua
-- Tecla líder (Leader Key)
vim.g.mapleader = " "

-- Opções Globais
local opt = vim.opt
opt.number = true
opt.expandtab = true
opt.shiftwidth = 2

-- Autocomando: Destacar texto ao copiar (Yank)
vim.api.nvim_create_autocmd("TextYankPost", {
  callback = function()
    vim.highlight.on_yank({ timeout = 200 })
  end,
})

-- require("user") -- Carregará sua pasta lua/user/ futuramente
Modularização
Embora você possa colocar tudo em um único arquivo, conforme sua config cresce, recomendamos separar em módulos (como vimos na seção de estrutura).