nvim-treesitter революция в подсветке кода для Neovim
Это архивный репозиторий и может быть устаревшим.
Когда последний раз ваш редактор кода неправильно определял структуру программы? С nvim-treesitter такие проблемы останутся в прошлом. Этот плагин выводит подсветку синтаксиса и анализ кода на принципиально новый уровень благодаря интеграции с парсером Tree-sitter.
Почему обычной подсветки синтаксиса уже недостаточно
Традиционные системы подсветки кода работают на основе регулярных выражений, что часто приводит к ошибкам:
- Неправильное определение контекста (например, комментарии внутри строк)
- Проблемы с вложенными конструкциями
- Ограниченные возможности анализа структуры кода

Как видно на примере C++, nvim-treesitter обеспечивает более точное понимание кода благодаря синтаксическому дереву.
Что умеет nvim-treesitter
1. Умная подсветка синтаксиса
Плагин анализирует не текст, а абстрактное синтаксическое дерево (AST), что даёт:
- Контекстно-зависимую подсветку
- Поддержку всех современных языков
- Автоматическое обновление при изменении кода
-- Пример настройки подсветки
require'nvim-treesitter.configs'.setup {
highlight = {
enable = true,
disable = {"html", "markdown"}, -- исключения
additional_vim_regex_highlighting = false
}
}
2. Инкрементальное выделение
Выделяйте логические блоки кода с помощью клавиш:
gnn— начать выделениеgrn— расширить до следующего узлаgrc— выделить текущую область видимости
3. Автоматическое сворачивание кода
Фолдинг на основе синтаксического дерева работает точнее традиционных методов:
" Включение фолдинга
set foldmethod=expr
set foldexpr=v:lua.vim.treesitter.foldexpr()
Как начать использовать
- Установите Neovim 0.10+ (рекомендуется nightly build)
- Добавьте плагин через ваш менеджер пакетов:
-- Для lazy.nvim
require("lazy").setup({
{"nvim-treesitter/nvim-treesitter", build = ":TSUpdate"}
})
- Установите парсеры для нужных языков:
:TSInstall python javascript typescript
Поддержка языков
Проект поддерживает более 150 языков программирования, включая:
- Основные (C++, Java, Python, Go)
- Современные (Rust, Zig, Kotlin)
- Специализированные (Terraform, GraphQL, SQL)
Полный список можно посмотреть командой :TSInstallInfo.
Расширенные возможности
Добавление собственных парсеров
Если ваш язык не поддерживается, можно добавить его вручную:
local parser_config = require "nvim-treesitter.parsers".get_parser_configs()
parser_config.my_lang = {
install_info = {
url = "~/projects/tree-sitter-my-lang",
files = {"src/parser.c"}
},
filetype = "mylang"
}
Настройка запросов
Вы можете кастомизировать подсветку, определив свои правила:
-- Подсветка @function.call как Identifier
vim.api.nvim_set_hl(0, "@function.call", {link = "Identifier"})
Проблемы и решения
Если что-то не работает:
- Запустите
:checkhealth nvim-treesitter - Обновите парсеры:
:TSUpdate - Проверьте правильность определения filetype
Почему стоит попробовать
nvim-treesitter — это:
- Более точная подсветка кода
- Поддержка современных языков
- Расширенные возможности анализа кода
- Активное сообщество и постоянное развитие
Для разработчиков, которые проводят много времени в редакторе, этот плагин станет незаменимым помощником, делая работу с кодом более комфортной и эффективной.
