Buffers, janelas e abas
Definição curta: Buffer é o conteúdo de um arquivo carregado na memória; janela é uma vista sobre um buffer; aba é um arranjo de janelas. Os três são independentes.
Antes de começar
- Saber sair do Neovim (
:q) e navegar em modo normal
O que você vai aprender
- Explicar Buffers com suas palavras
- Explicar Janelas com suas palavras
- Explicar Abas com suas palavras
- Localizar o assunto desta página no
:helpdo seu próprio Neovim
O que é
Este é o modelo que mais confunde quem vem de outros editores, porque nomes iguais significam coisas diferentes. No VS Code, uma “aba” é um arquivo aberto. No Neovim, não.
| Conceito | O que é | Comando de listagem |
|---|---|---|
| Buffer | o conteúdo de um arquivo na memória | :ls ou :buffers |
| Janela (window) | uma vista sobre um buffer | :windows |
| Aba (tab page) | um arranjo de janelas | :tabs |
A relação não é um para um. O mesmo buffer pode aparecer em três janelas simultâneas — útil para ver duas partes do mesmo arquivo. Uma janela mostra um buffer por vez. Uma aba contém um ou mais layouts de janela.
Buffers
Um buffer existe a partir do momento em que você abre um arquivo, e continua existindo depois que você “sai” dele.
:e arquivo.lua " abre em buffer novo
:ls " lista os buffers
:b 3 " vai para o buffer 3
:b parcial<Tab> " completa por nome parcial
:bn / :bp " próximo / anterior
:bd " descarrega o buffer (buffer delete)
Os indicadores de :ls importam:
1 #h "init.lua" linha 42
2 %a + "lua/plugins.lua" linha 7
3 h "README.md" linha 1
%é o buffer da janela atual,#é o alternativo (alvo do<C-^>)aé ativo (visível em alguma janela),hé oculto+significa modificado e não salvo
O <C-^> alterna entre o buffer atual e o alternativo. É provavelmente o atalho de navegação com melhor razão entre economia e esforço de aprendizado.
Janelas
:sp / <C-w>s " divide na horizontal
:vs / <C-w>v " divide na vertical
<C-w>h j k l " move para a janela à esquerda/baixo/cima/direita
<C-w>H J K L " reposiciona a janela inteira
<C-w>c " fecha a janela (o buffer continua vivo)
<C-w>o " fecha todas as outras
<C-w>= " iguala os tamanhos
<C-w>_ / <C-w>| " maximiza altura / largura
10<C-w>+ " aumenta 10 linhas
Fechar uma janela não descarrega o buffer. Esse é o mal-entendido mais comum: o arquivo continua aberto, apenas não está visível.
Abas
Uma aba do Neovim é um espaço de trabalho com seu próprio layout de janelas — mais próxima de um “workspace” que de uma aba de navegador.
:tabnew arquivo " nova aba
gt / gT " próxima / anterior
2gt " vai para a aba 2
:tabclose " fecha a aba
:tabonly " fecha as outras
O uso idiomático não é “uma aba por arquivo” — é “uma aba por contexto de trabalho”: uma para o código, outra para os testes, outra para a documentação.
Escondido versus descarregado
A opção hidden (ligada por padrão no Neovim) permite sair de um buffer modificado sem salvar. Com ela desligada, o Neovim recusa a troca até você salvar ou descartar.
:set hidden? " consulta o estado
:bd! " descarrega descartando modificações
:w | bd " salva e descarregaFluxo recomendado
Para a maioria dos usos, buffers bastam e janelas resolvem a comparação lado a lado. Abas são para separar contextos grandes.
Uma configuração mínima que torna a navegação por buffers confortável:
vim.keymap.set('n', '<leader>bn', ':bnext<CR>', { desc = 'Próximo buffer' })
vim.keymap.set('n', '<leader>bp', ':bprev<CR>', { desc = 'Buffer anterior' })
vim.keymap.set('n', '<leader>bd', ':bdelete<CR>', { desc = 'Fecha buffer' })
vim.keymap.set('n', '<leader><leader>', '<C-^>', { desc = 'Alterna buffer' })
Com Telescope instalado, :Telescope buffers substitui boa parte disso com busca difusa.
Erros comuns
- Usar
:qesperando fechar o arquivo —:qfecha a janela; se era a última, encerra o Neovim :bdachando que fecha só a janela — é o contrário- Uma aba por arquivo — funciona, mas desperdiça o modelo e fica lento acima de dez abas
- Achar que buffer oculto consome recurso relevante — cem buffers de texto são irrelevantes em memória
Você aprendeu
- Buffers
- Janelas
- Abas
- Escondido versus descarregado
- Fluxo recomendado
Perguntas para reflexão
- O que Buffers resolve, e o que se perde sem isso?
- O que Janelas resolve, e o que se perde sem isso?
- O que Abas resolve, e o que se perde sem isso?
- Qual parte desta página você conseguiria reproduzir sem consultar, direto no editor?
Artigos relacionados
Veja também
- Modos do Neovim — o outro modelo fundamental
- Marks — voltar a posições específicas
- Jumps — histórico de navegação
- Telescope — busca difusa de buffers
Referências
:help windows— a documentação canônica dos três conceitos:help buffers:help tab-page