Skip to content

AzizAlievDevelopment/nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Neovim Config

Модульная конфигурация Neovim на Lua с lazy.nvim.

Демо

Demo

Установка

1. Neovim

Требуется версия >= 0.11.

ОС Команда
Arch Linux sudo pacman -S neovim
macOS brew install neovim
Windows scoop install neovim или choco install neovim

2. Зависимости

Пакет Назначение
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

3. Шрифт

Установите 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 в настройках терминала.

4. Клонирование конфига

Linux / macOS:

git clone https://github.com/<user>/nvim.git ~/.config/nvim

Windows:

git clone https://github.com/<user>/nvim.git $env:LOCALAPPDATA\nvim

5. Первый запуск

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 Поменять окна местами

Закладки (Harpoon)

Клавиша Действие
<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 Выбрать рефакторинг (меню)

Поиск (Telescope)

Клавиша Действие
<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 Поиск и замена по проекту

LSP

Клавиша Действие
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 Поменять параметр назад

Git

Клавиша Действие
<leader>tg Lazygit
<leader>gd Просмотр изменений (Diffview)
<leader>gh История файла
<leader>gc Коммиты (Telescope)

Изменения (Gitsigns)

Клавиша Режим Действие
]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 включён по умолчанию — автор и коммит отображаются в конце каждой строки.

Конфликты (git-conflict)

Клавиша Действие
co Выбрать наши изменения
ct Выбрать их изменения
cb Выбрать оба
c0 Удалить обе версии
]x / [x Следующий / предыдущий конфликт

Отладка (DAP)

Клавиша Действие
F5 Продолжить / запустить
F10 Шаг через
F11 Шаг внутрь
F12 Шаг наружу
<leader>db Точка останова
<leader>dB Условная точка останова
<leader>dr Консоль отладки
<leader>du Панель отладки

Тесты (Neotest)

Клавиша Действие
<leader>Tr Запустить ближайший тест
<leader>Tf Запустить тесты файла
<leader>Ts Панель тестов
<leader>To Показать вывод теста
<leader>Tp Панель вывода
<leader>Td Отладить тест
[T / ]T Предыдущий / следующий упавший тест

HTTP клиент (Kulala)

Клавиша Действие
<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"
}

База данных (Dadbod)

Клавиша Действие
<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)

Фолдинг (nvim-ufo)

Клавиша Действие
za Переключить складку
zo / zc Открыть / закрыть складку
zR Открыть все складки
zM Закрыть все складки
zK Предпросмотр складки

История копирований (yanky.nvim)

Клавиша Режим Действие
p / P Normal/Visual Вставить после / перед (с историей)
Alt+p Normal Предыдущий элемент из истории
Alt+n Normal Следующий элемент из истории
<leader>fy Normal История копирований (Telescope)

Файловый менеджер (Oil)

Клавиша Действие
- Открыть родительскую папку как буфер
Enter Открыть файл/папку
Ctrl+p Предпросмотр файла
q Закрыть

Редактируйте файлы как обычный буфер: удаляйте строки для удаления файлов, dd + p для перемещения, o для создания нового.


Переключатели

Клавиша Действие
<leader>tt Тёмная ↔ светлая тема
<leader>th Подсказки типов вкл/выкл
<leader>htb Inline blame вкл/выкл
<leader>htd Удалённые строки вкл/выкл
<leader>mp Предпросмотр Markdown

Автодополнение (cmp)

Клавиша Режим Действие
Ctrl+n / Ctrl+p Insert Следующий / предыдущий вариант
Ctrl+b / Ctrl+f Insert Прокрутка документации
Ctrl+Space Insert Открыть автодополнение
Ctrl+e Insert Закрыть автодополнение
Enter Insert Подтвердить выбор
Tab / Shift+Tab Insert Навигация по вариантам / сниппетам

Сигнатуры функций отображаются автоматически при вводе аргументов.


Группы which-key

Префикс Группа
<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

About

Модульная конфигурация Neovim на Lua с lazy.nvim. Включает LSP, автодополнение, форматирование, Git-инструменты, поиск через Telescope (Neovim plugin) и удобные хоткеи через which-key.nvim.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages