Configuração do Treesitter
Definição curta: Tutorial para configurar o Treesitter no Neovim v0.11+ para syntax highlighting avançado, text objects e navegação estrutural.
Antes de começar
- Neovim v0.11 ou mais recente instalado — confira com
nvim --version - Um
init.luaque já carrega, ainda que vazio
O que você vai aprender
- Explicar Plugins necessários com suas palavras
- Explicar Instalar parsers com suas palavras
- Explicar Configuração básica com suas palavras
- Localizar o assunto desta página no
:helpdo seu próprio Neovim
O que é
Treesitter é um parser de código que permite análise sintática incremental e precisa. No Neovim, habilita syntax highlighting de qualidade e text objects estruturais.
Índice de sub-tópicos
Plugins necessários
-- plugins/treesitter.lua
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
dependencies = {
"nvim-treesitter/nvim-treesitter-textobjects",
},
}Instalar parsers
# Via comando Neovim
:TSInstall python lua javascript typescript c rust go
Ou via config Lua:
require("nvim-treesitter.install").setup({ prefer_git = true })Configuração básica
-- setup/treesitter.lua
require("nvim-treesitter.configs").setup({
ensure_installed = {
"lua",
"python",
"javascript",
"typescript",
"c",
"rust",
"go",
},
sync_install = false,
auto_install = true,
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
indent = { enable = true },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "gnn",
node_incremental = "grn",
scope_incremental = "grc",
node_decremental = "grm",
},
},
})Text objects
Com nvim-treesitter-textobjects instalado:
-- Text objects estruturais
-- if = inside função
-- af = around função
-- ic = inside classe
-- ac = around classeKeymaps para text objects
vim.keymap.set("o", "if", ":normal V<CR>", { silent = true }) -- inside função
vim.keymap.set("o", "ac", ":normal V<CR>", { silent = true }) -- around classeNavegação estrutural
-- Navigear para nós da árvore
vim.keymap.set("n", "]", "function()<local parser=r equire'nvim-treesitter'.get_parser()<CR>", opts)Você aprendeu
- Plugins necessários
- Instalar parsers
- Configuração básica
- Text objects
- Navegação estrutural
Perguntas para reflexão
- O que Plugins necessários resolve, e o que se perde sem isso?
- O que Instalar parsers resolve, e o que se perde sem isso?
- O que Configuração básica 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
- Configuração LSP — Integração com LSP
- Text Objects — Conceito de text objects
Referências
- nvim-treesitter — Repositório oficial
- Treesitter — Documentação do parser