init.lua Básico

    Definição curta: Tutorial para criar o primeiro arquivo de configuração init.lua no Neovim v0.11+. Cobre estrutura básica, options, keymaps e organização.

    Antes de começar

    • Neovim v0.11 ou mais recente instalado — confira com nvim --version
    • Um init.lua que já carrega, ainda que vazio

    O que você vai aprender

    • Explicar Localização do init.lua com suas palavras
    • Explicar Estrutura básica com suas palavras
    • Explicar Configurar options com suas palavras
    • Localizar o assunto desta página no :help do seu próprio Neovim

    O que é

    O init.lua é o arquivo principal de configuração do Neovim quando usado com Lua. Substitui o tradicional init.vim (Vimscript).

    Localização do init.lua

    O Neovim procura configuração na ordem:

    $XDG_CONFIG_HOME/nvim/init.lua
    ~/.config/nvim/init.lua  (Linux/macOS)
    %APPDATA%/nvim/init.lua  (Windows)

    Verificar config

    echo $XDG_CONFIG_HOME  # Usually ~/.config
    ls -la ~/.config/nvim/

    Estrutura básica

    -- ~/.config/nvim/init.lua
    
    -- Comentários começam com --
    -- Configurações gerais
    vim.g.mapleader = " "
    
    -- Options
    vim.opt.number = true
    vim.opt.relativenumber = true
    vim.opt.expandtab = true
    vim.opt.tabstop = 2
    vim.opt.shiftwidth = 2
    vim.opt.smartindent = true
    
    -- Keymaps
    vim.keymap.set("n", "<leader>w", ":w<CR>", { silent = true })

    Configurar options

    Opções comuns para começar

    -- Interface
    vim.opt.number = true
    vim.opt.relativenumber = true
    vim.opt.cursorline = true
    vim.opt.signcolumn = "yes"
    
    -- Indentação
    vim.opt.expandtab = true
    vim.opt.tabstop = 2
    vim.opt.shiftwidth = 2
    vim.opt.smartindent = true
    
    -- Comportamento
    vim.opt.hidden = true
    vim.opt.backup = false
    vim.opt.writebackup = false
    vim.opt.swapfile = false
    vim.opt.wrap = false

    Criar keymaps

    Keymap básico

    vim.keymap.set("n", "<leader>w", ":w<CR>", { silent = true })
    ParâmetroDescrição
    "n"Modo Normal
    "<leader>w"Sequência de teclas
    ":w<CR>"Comando a executar
    { silent = true }Não mostrar no command-line

    Keymaps por modo

    vim.keymap.set("n", "<Esc>", ":noh<CR>", { silent = true })  -- Normal
    vim.keymap.set("i", "jk", "<Esc>", { silent = true })        -- Insert
    vim.keymap.set("v", "<", "<gv", { silent = true })            -- Visual (re-indent)
    vim.keymap.set("v", ">", ">gv", { silent = true })            -- Visual

    Organizar em módulos

    Para configs maiores, separe em arquivos:

    ~/.config/nvim/
    ├── init.lua
    ├── lua/
    │   └── user/
    │       ├── options.lua
    │       ├── keymaps.lua
    │       └── plugins.lua

    Carregar módulos no init.lua

    -- init.lua
    require("user.options")
    require("user.keymaps")
    require("user.plugins")

    lua/user/options.lua

    -- lua/user/options.lua
    vim.opt.number = true
    vim.opt.relativenumber = true
    vim.opt.cursorline = true
    vim.opt.signcolumn = "yes"
    vim.opt.expandtab = true
    vim.opt.tabstop = 2
    vim.opt.shiftwidth = 2
    vim.opt.smartindent = true
    vim.opt.hidden = true

    Tutorial passo-a-passo

    1. Verificar local da config:

      ls -la ~/.config/nvim/ 2>/dev/null || echo "Diretório não existe"
    2. Criar diretório:

      mkdir -p ~/.config/nvim/lua/user
    3. Criar init.lua básico

    4. Abrir Neovim e testar

    5. Iterar e expandir

    Você aprendeu

    • Localização do init.lua
    • Estrutura básica
    • Configurar options
    • Criar keymaps
    • Organizar em módulos

    Perguntas para reflexão

    1. O que Localização do init.lua resolve, e o que se perde sem isso?
    2. O que Estrutura básica resolve, e o que se perde sem isso?
    3. O que Configurar options resolve, e o que se perde sem isso?
    4. Qual parte desta página você conseguiria reproduzir sem consultar, direto no editor?

    Artigos relacionados

    Veja também

    Referências