Модульная конфигурация Neovim на Lua с lazy.nvim.
Требуется версия >= 0.11 .
ОС
Команда
Arch Linux
sudo pacman -S neovim
macOS
brew install neovim
Windows
scoop install neovim или choco install neovim
Пакет
Назначение
git
Клонирование репозитория и плагинов
ripgrep
Поиск по тексту (Telescope live grep)
lazygit
Git-интерфейс в терминале
tree-sitter-cli
Компиляция парсеров подсветки
nodejs
LSP серверы (TypeScript, HTML, CSS, JSON и др.)
python
LSP серверы (Pyright, Ruff)
dotnet-sdk
LSP сервер (OmniSharp, C#)
Arch Linux:
sudo pacman -S git ripgrep lazygit nodejs python dotnet-sdk tree-sitter-cli
macOS:
brew install git ripgrep lazygit node python tree-sitter
brew install --cask dotnet-sdk
Windows:
scoop install git ripgrep lazygit nodejs python tree- sitter
# .NET SDK: https://dotnet.microsoft.com/download
Установите JetBrainsMono Nerd Font — нужен для иконок в интерфейсе.
Arch Linux:
sudo pacman -S ttf-jetbrains-mono-nerd
macOS:
brew install --cask font-jetbrains-mono-nerd-font
Windows:
Скачайте с nerdfonts.com , распакуйте и установите через правый клик → «Установить для всех пользователей».
После установки выберите шрифт JetBrainsMono Nerd Font в настройках терминала.
Linux / macOS:
git clone https://github.com/< user> /nvim.git ~ /.config/nvim
Windows:
git clone https:// github.com / < user> / nvim.git $env: LOCALAPPDATA \nvim
При первом запуске автоматически:
lazy.nvim установит все плагины
Mason установит LSP серверы, форматтеры и линтеры
Treesitter скомпилирует парсеры подсветки
Дождитесь завершения установки, затем перезапустите Neovim.
~/.config/nvim/
├── init.lua # Точка входа (leader + require)
└── lua/
├── utils.lua # Общие утилиты (python_path, get_palette)
├── config/
│ ├── options.lua # Настройки редактора
│ ├── keymaps.lua # Глобальные клавиши
│ ├── autocmds.lua # Автокоманды
│ └── lazy.lua # Bootstrap lazy.nvim
└── plugins/
├── colorscheme.lua # Catppuccin (авто тёмная/светлая)
├── treesitter.lua # Подсветка + textobjects + matchup + autotag
├── lsp.lua # Языковые серверы + Mason
├── cmp.lua # Автодополнение + сигнатуры + cmdline
├── formatting.lua # Форматирование и линтинг
├── telescope.lua # Поиск файлов и текста + live grep args
├── editor.lua # Autopairs, comments, multicursor, surround, dial, refactoring, mini.ai
├── explorer.lua # Файловое дерево (Neo-tree) + файловый менеджер (Oil)
├── git.lua # Gitsigns, diffview, git-conflict
├── navigation.lua # Flash, aerial, trouble, harpoon, portal
├── terminal.lua # Терминал и lazygit
├── debug.lua # Отладчик (DAP)
├── testing.lua # Neotest (pytest, jest, dotnet)
├── tools.lua # UFO, yanky, grug-far, project, markdown-preview
├── session.lua # Сохранение сессий
├── http.lua # REST клиент (kulala)
├── database.lua # База данных (dadbod)
└── ui/
├── statusline.lua # Lualine
├── bufferline.lua # Bufferline (вкладки буферов)
├── dashboard.lua # Alpha (стартовый экран)
├── notifications.lua # Noice + nvim-notify
├── enhance.lua # Statuscol, fidget, dropbar, dressing, which-key
├── visual.lua # Анимации, indent guides, colorizer, illuminate, hlslens
└── windows.lua # Smart-splits, window-picker, zen-mode, twilight
Язык
LSP
Форматтер
Линтер
JavaScript / TypeScript
ts_ls
prettierd
eslint_d
HTML
html + emmet_ls
prettierd
—
CSS / SCSS
cssls
prettierd
—
Python
pyright
ruff
ruff
C#
omnisharp
csharpier
—
Lua
lua_ls
stylua
—
Dockerfile
dockerls
—
hadolint
docker-compose
docker_compose_language_service
—
—
YAML
yamlls (+ schemastore)
prettierd
yamllint
TOML
taplo
taplo
—
JSON
jsonls (+ schemastore)
prettierd
—
Bash
bashls
shfmt
shellcheck
Leader: Space
Все маппинги доступны через which-key — нажми Space и увидишь все команды.
Клавиша
Режим
Действие
jk
Insert
Выход в normal mode
Esc
Normal
Убрать подсветку поиска
J
Normal
Объединить строки (без смещения курсора)
<leader>w
Normal
Сохранить файл
<leader>q
Normal
Закрыть окно
<leader>p
Visual
Вставить без потери регистра
<leader>cw
Normal
Заменить слово под курсором по файлу
<leader>o / <leader>O
Normal
Пустая строка снизу / сверху
Ctrl+a
Normal
Выделить весь файл
j / k
Normal/Visual
Навигация по обёрнутым строкам
q
—
Закрыть help/qf/man/lspinfo/checkhealth
Клавиша
Режим
Действие
Ctrl+h/j/k/l
Normal
Перемещение между окнами
Ctrl+стрелки
Normal
Изменение размера окон
Ctrl+d / Ctrl+u
Normal
Прокрутка вниз/вверх (с центрированием)
n / N
Normal
Следующий/предыдущий результат поиска
s
Normal/Visual
Прыжок к символу (Flash)
S
Normal/Visual
Выделить по treesitter (Flash)
Ctrl+o / Ctrl+i
Normal
Назад/вперёд по истории (Portal)
]] / [[
Normal
Следующее/предыдущее вхождение слова
Shift+H / Shift+L
Normal
Предыдущий / следующий буфер
Alt+Shift+H / Alt+Shift+L
Normal
Переместить буфер влево / вправо
Клавиша
Действие
<leader>x
Закрыть буфер (без закрытия окна)
<leader>X
Закрыть буфер принудительно
<leader>ba
Закрыть все буферы кроме текущего
<leader>bp
Закрепить буфер
<leader>bo
Закрыть остальные буферы
<leader>bl
Закрыть буферы справа
<leader>bh
Закрыть буферы слева
<leader>bs
Выбрать буфер по букве
<leader>e
Файловое дерево (Neo-tree)
-
Открыть родительскую папку (Oil)
<leader>o
Структура файла (Aerial)
<leader>z
Режим фокуса (с затемнением неактивного кода)
<leader>wp
Выбрать окно по букве
<leader>ws
Поменять окна местами
Клавиша
Действие
<leader>a
Добавить файл в закладки
<leader>m
Меню закладок
<leader>1
Перейти к закладке 1
<leader>2
Перейти к закладке 2
<leader>3
Перейти к закладке 3
<leader>4
Перейти к закладке 4
Клавиша
Режим
Действие
J / K
Visual
Переместить строки вниз/вверх
< / >
Visual
Отступы без потери выделения
gc / gcc
Normal/Visual
Комментировать
ys/ds/cs
Normal
Обрамление: добавить/удалить/изменить
Ctrl+a / Ctrl+x
Normal
Увеличить/уменьшить число (даты, boolean, hex)
%
Normal
Переход между парными конструкциями
<CR>
Normal
Начать инкрементальное выделение (treesitter)
<CR> / <BS>
Visual
Расширить / сузить выделение по AST
Клавиша
Режим
Действие
<leader>rn
Normal
Переименовать символ (с предпросмотром)
<leader>re
Visual
Извлечь функцию
<leader>rv
Visual
Извлечь переменную
<leader>ri
Normal/Visual
Встроить переменную
<leader>rb
Normal
Извлечь блок
<leader>rr
Normal/Visual
Выбрать рефакторинг (меню)
Клавиша
Действие
<leader>ff
Найти файлы
<leader>fg
Поиск по тексту (live grep)
<leader>fG
Поиск по тексту (с аргументами rg)
<leader>fb
Открытые буферы
<leader>fh
Справка
<leader>fr
Недавние файлы
<leader>fd
Диагностика
<leader>fs
Символы в файле
<leader>fS
Символы в проекте
<leader>fk
Все клавиши
<leader>fu
История отмен
<leader>fp
Проекты
<leader>fy
История копирований
<leader>ft
Все TODO в проекте
<leader>/
Поиск в текущем буфере
<leader>sr
Поиск и замена по проекту
Клавиша
Действие
gd
Перейти к определению
gD
Перейти к объявлению
gr
Найти все ссылки
gi
Перейти к реализации
K
Документация
<leader>ca
Действия с кодом
<leader>cf
Форматировать файл
<leader>d
Показать диагностику
[d / ]d
Предыдущая / следующая ошибка
<leader>cl
Информация о серверах
<leader>th
Переключить подсказки типов
Диагностика (Trouble) и TODO
Клавиша
Действие
<leader>xx
Все ошибки проекта
<leader>xd
Ошибки в текущем файле
<leader>xl
Определения
<leader>xt
Все TODO (Trouble)
]t / [t
Следующий / предыдущий TODO
Клавиша
Режим
Действие
<up> / <down>
Normal/Visual
Добавить курсор выше/ниже
<leader><up> / <leader><down>
Normal/Visual
Пропустить строку выше/ниже
<leader>n
Normal/Visual
Добавить курсор на следующее совпадение
<leader>N
Normal/Visual
Добавить курсор на предыдущее совпадение
<leader>s
Normal/Visual
Пропустить следующее совпадение
<leader>S
Normal/Visual
Пропустить предыдущее совпадение
Ctrl+q
Normal/Visual
Переключить курсор в позиции
Ctrl+клик
Normal
Добавить курсор мышью
<left> / <right>
Normal/Visual
Предыдущий / следующий курсор
Esc
Normal
Очистить все курсоры
Все стандартные команды Vim (ciw, d, I, A, y, p) работают на всех курсорах одновременно.
Текстовые объекты (Treesitter + mini.ai)
Клавиша
Режим
Описание
af / if
Visual/Operator
Функция (outer/inner)
ac / ic
Visual/Operator
Класс (outer/inner)
aa / ia
Visual/Operator
Параметр (outer/inner)
ao / io
Visual/Operator
Блок/условие/цикл (outer/inner)
]f / [f
Normal
Следующая / предыдущая функция
]c / [c
Normal
Следующий / предыдущий класс
<leader>a
Normal
Поменять параметр вперёд
<leader>A
Normal
Поменять параметр назад
Клавиша
Действие
<leader>tg
Lazygit
<leader>gd
Просмотр изменений (Diffview)
<leader>gh
История файла
<leader>gc
Коммиты (Telescope)
Клавиша
Режим
Действие
]h / [h
Normal
Следующее / предыдущее изменение
<leader>hs
Normal/Visual
Индексировать изменение
<leader>hr
Normal/Visual
Сбросить изменение
<leader>hS
Normal
Индексировать буфер
<leader>hR
Normal
Сбросить буфер
<leader>hp
Normal
Предпросмотр изменения (inline)
<leader>hb
Normal
Автор строки (полный)
<leader>hd
Normal
Diff текущего файла
<leader>hu
Normal
Отменить индексацию
<leader>htb
Normal
Вкл/выкл inline blame
<leader>htd
Normal
Вкл/выкл удалённые строки
Inline blame включён по умолчанию — автор и коммит отображаются в конце каждой строки.
Клавиша
Действие
co
Выбрать наши изменения
ct
Выбрать их изменения
cb
Выбрать оба
c0
Удалить обе версии
]x / [x
Следующий / предыдущий конфликт
Клавиша
Действие
F5
Продолжить / запустить
F10
Шаг через
F11
Шаг внутрь
F12
Шаг наружу
<leader>db
Точка останова
<leader>dB
Условная точка останова
<leader>dr
Консоль отладки
<leader>du
Панель отладки
Клавиша
Действие
<leader>Tr
Запустить ближайший тест
<leader>Tf
Запустить тесты файла
<leader>Ts
Панель тестов
<leader>To
Показать вывод теста
<leader>Tp
Панель вывода
<leader>Td
Отладить тест
[T / ]T
Предыдущий / следующий упавший тест
Клавиша
Действие
<leader>hr
Выполнить HTTP запрос
<leader>ha
Выполнить все запросы
<leader>hp
Предыдущий запрос
<leader>hn
Следующий запрос
Создайте файл api.http:
GET https://jsonplaceholder.typicode.com/posts/1
Accept: application/json
###
POST https://api.example.com/users
Content-Type: application/json
{
"name" : " John"
}
Клавиша
Действие
<leader>Du
Открыть БД интерфейс
<leader>Da
Добавить подключение
Формат подключения: postgresql://user:pass@localhost/dbname
Клавиша
Действие
<leader>qs
Восстановить сессию
<leader>ql
Последняя сессия
<leader>qd
Не сохранять сессию
Клавиша
Действие
Ctrl+\
Переключить терминал (float)
<leader>tf
Плавающий терминал
<leader>th
Терминал снизу
<leader>tv
Терминал сбоку
<leader>t1 / t2 / t3
Нумерованные терминалы
Esc
Обычный режим в терминале (кроме lazygit)
Клавиша
Действие
za
Переключить складку
zo / zc
Открыть / закрыть складку
zR
Открыть все складки
zM
Закрыть все складки
zK
Предпросмотр складки
История копирований (yanky.nvim)
Клавиша
Режим
Действие
p / P
Normal/Visual
Вставить после / перед (с историей)
Alt+p
Normal
Предыдущий элемент из истории
Alt+n
Normal
Следующий элемент из истории
<leader>fy
Normal
История копирований (Telescope)
Клавиша
Действие
-
Открыть родительскую папку как буфер
Enter
Открыть файл/папку
Ctrl+p
Предпросмотр файла
q
Закрыть
Редактируйте файлы как обычный буфер: удаляйте строки для удаления файлов, dd + p для перемещения, o для создания нового.
Клавиша
Действие
<leader>tt
Тёмная ↔ светлая тема
<leader>th
Подсказки типов вкл/выкл
<leader>htb
Inline blame вкл/выкл
<leader>htd
Удалённые строки вкл/выкл
<leader>mp
Предпросмотр Markdown
Клавиша
Режим
Действие
Ctrl+n / Ctrl+p
Insert
Следующий / предыдущий вариант
Ctrl+b / Ctrl+f
Insert
Прокрутка документации
Ctrl+Space
Insert
Открыть автодополнение
Ctrl+e
Insert
Закрыть автодополнение
Enter
Insert
Подтвердить выбор
Tab / Shift+Tab
Insert
Навигация по вариантам / сниппетам
Сигнатуры функций отображаются автоматически при вводе аргументов.
Префикс
Группа
<leader>f
Поиск
<leader>g
Git
<leader>h
Изменения / HTTP
<leader>d
Отладка
<leader>c
Код
<leader>b
Буферы
<leader>t
Терминал
<leader>s
Поиск/Замена
<leader>r
Рефакторинг
<leader>T
Тесты
<leader>D
База данных
<leader>x
Ошибки
<leader>q
Сессия
Автосохранение при потере фокуса, переключении буфера и простое
Оптимизация больших файлов (>1MB): отключение синтаксиса, treesitter, LSP, indent guides
Inline git blame на каждой строке (автор, дата, коммит)
Инкрементальное выделение по AST-дереву (<CR> / <BS>)
Анимированная подсветка текущего scope (mini.indentscope)
Затемнение неактивного кода в режиме фокуса (twilight)
Счётчик результатов поиска и количество слов для markdown в статусной строке
Отложенная загрузка clipboard для быстрого старта
Fallback на vim.lsp.buf.rename() если inc-rename недоступен
Очистка LSP-кеймапов при отключении сервера
MIT