---
tags: [tooling]
verified: 2026-09-02
---

# Neovim: руководство по конфигурации и работе

## Архитектура конфига

Весь конфиг живёт в одном файле `~/.config/nvim/init.lua` и состоит из четырёх логических слоёв:

**1. Bootstrap** (строки 1–10) — автоустановка менеджера плагинов lazy.nvim. При первом запуске nvim клонирует репозиторий lazy.nvim в `~/.local/share/nvim/lazy/` и добавляет его в runtime path. Дальше lazy.nvim управляет всеми остальными плагинами.

**2. Глобальные настройки** (строки 12–21) — leader key и визуальные опции. Leader задаётся до `lazy.setup()`, иначе маппинги плагинов могут подхватить неправильный leader.

**3. Плагины** (строки 23–150) — блок `require("lazy").setup({...})`. Каждый плагин — отдельная таблица с полями: имя репозитория, зависимости, функция конфигурации. Lazy.nvim автоматически скачивает и обновляет плагины.

**4. Кеймапы вне плагинов** (строки 152–170) — глобальные маппинги для буферов и окон, не привязанные к конкретному плагину.

### Ключевые пути

| Путь | Содержимое |
|------|-----------|
| `~/.config/nvim/init.lua` | Конфигурация (единственный файл, который мы редактируем) |
| `~/.local/share/nvim/lazy/` | Скачанные плагины (управляется lazy.nvim) |
| `~/.local/state/nvim/` | Undo-история, shada (история команд/поиска) |
| `~/.cache/nvim/` | Кеш, логи |


## Плагины

### lazy.nvim — менеджер плагинов

Управляет установкой, обновлением и ленивой загрузкой всех остальных плагинов. Интерфейс управления: `:Lazy`. Там можно обновить плагины (`U`), проверить состояние, посмотреть логи.

Внешний менеджер перестал быть безальтернативным: в Neovim 0.12 (март 2026) появился встроенный `vim.pack` — минималистичный менеджер, который ставит плагины прямо с GitHub по декларативному списку и пишет lock-файл с версиями. Формально он ещё помечен экспериментальным, но документация считает его пригодным для повседневной работы. Для конфига с ленивой загрузкой и событийными триггерами lazy.nvim по-прежнему богаче; для простого набора плагинов bootstrap-блок теперь можно убрать вовсе.

### gruvbox-material — цветовая схема

Тёплая тёмная тема. Настраивается двумя параметрами: `background` (контрастность фона: soft / medium / hard) и `foreground` (палитра текста: material / mix / original). Загружается первой (`priority = 1000`), чтобы остальные плагины подхватили цвета.

### lualine — строка статуса

Нижняя строка с информацией о текущем состоянии. Слева направо: режим → git-ветка, diff, диагностика → имя файла → кодировка, формат, тип файла → прогресс → позиция курсора. Тема синхронизирована с gruvbox-material. Требует Nerd Font для иконок.

### telescope — fuzzy finder

Универсальный поиск внутри nvim. Ищет файлы, текст, буферы, историю, help — всё через единый интерфейс с fuzzy-фильтрацией. Работает относительно текущей рабочей директории (откуда запущен nvim). Использует ripgrep для grep-поиска и fzf-native для быстрой сортировки результатов.

Системные зависимости: `ripgrep` (обязательно для live_grep), `fd` (опционально, ускоряет поиск файлов), `make`/`gcc` (для компиляции fzf-native).

### neo-tree — файловое дерево

Боковая панель со структурой проекта. Автоматически подсвечивает текущий открытый файл (`follow_current_file`). Показывает скрытые файлы, но прячет то, что в `.gitignore`. Поддерживает создание, удаление, переименование, копирование и перемещение файлов.

### treesitter — подсветка синтаксиса

Парсит код в AST (абстрактное синтаксическое дерево) и подсвечивает на основе структуры, а не регулярных выражений. Точнее различает переменные, функции, типы, аргументы. Парсеры устанавливаются отдельно для каждого языка через `:TSInstall <язык>`.

Полезные команды: `:TSInstallInfo` — какие парсеры установлены, `:InspectTree` — показать AST текущего файла, `:Inspect` — какие highlight-группы применены к символу под курсором.


## Практический минимум

Чтобы быстро начать работу после установки конфига, достаточно запомнить несколько команд:

- `Пробел ff` — найти файл
- `Пробел fg` — поиск по содержимому (live grep)
- `Пробел e` — открыть/скрыть дерево файлов
- `Пробел x` — закрыть текущий буфер
- `:Lazy` — открыть менеджер плагинов

Полная шпаргалка по режимам, навигации и редактированию вынесена в отдельную заметку: [Neovim: рабочая справка](./nvim-cheatsheet.md).

---

## Связанные заметки

- [Neovim: рабочая справка](./nvim-cheatsheet.md) — краткая шпаргалка по клавишам и командам
- [Kitty terminal guide](./kitty-guide.md) — терминал: шрифты, лигатуры и передача клавиш в Neovim
- [Git: модель данных, rebase против merge и спасательные инструменты](./git-guide.md) — что происходит с историей, когда редактор открывается на todo-листе rebase или на конфликте
