В этом репозитории представлена оптимизированная конфигурация Neovim для разработки на C/C++ с мощными плагинами для автодополнения, подсветки синтаксиса, интеграции с Git и многого другого. Конфигурация сознательно выдержана в минималистичном стиле — быстрое начало, фокус на главном и лёгкая адаптация под ваши нужды.
Вместе с моими другими проектами vhstack/tmuxpp и vhstack/termpp это создаёт идеально согласованную рабочую среду для бесшовного и эффективного использования терминала, Tmux и Neovim.
- Поддержка LSP для C/C++ с автоматическим автодополнением
- Подсветка синтаксиса с помощью Treesitter
- Интеграция с Git прямо в Neovim
- Продвинутая навигация по файлам с Telescope и NeoTree
- Интеграция терминала для беспрепятственного рабочего процесса
| Плагин | Описание |
|---|---|
telescope |
Расширенный fuzzy-поиск и навигация по файлам |
lsp |
Language Server Protocol (LSP) для поддержки C/C++ |
mason |
Упрощённое управление LSP-серверами, отладчиками и линтерами |
cmp |
Движок автодополнения для улучшения рабочего процесса |
conform |
Поддержка форматирования кода |
lualine |
Настраиваемая строка состояния для Neovim |
gitsigns |
Интеграция с Git с отображением diffs внутри редактора |
treesitter |
Улучшенная подсветка синтаксиса для C/C++ |
toggleterm |
Встроенный терминал в Neovim |
outline |
Отображение структуры символов (классы, функции и т.д.) |
autopairs |
Автоматическое закрытие скобок и кавычек |
comments |
Простое комментирование блоков кода |
ansi |
Отображение цветных ANSI-кодов |
buffline |
Расширенная навигация по буферам |
blankline |
Визуализация отступов |
neotree |
Файловый менеджер для улучшенной навигации |
neogen |
Генератор документации в исходниках |
dashboard |
Экран запуска Neovim с быстрым доступом |
whichkey |
Быстрый просмотр горячих клавиш |
transparent |
Режим прозрачности для цветовой схемы |
Установленные цветовые схемы:
- kanagawa
- onedark
- glowbeam
- catppuccin (catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha)
Стандартная тема:
По умолчанию активирована цветовая схема catppuccin и прозрачность.
Варианты светлых тем:
Любители светлых тем могут использовать:
catppuccin-latte или установить другие темы.
- Установите Neovim
- Установите утилиту
rg(Ripgrep) - Установите для LSP сервер
clangd - Клонируйте репозиторий и удалите папку .git:
git clone --depth 1 https://github.com/vhstack/nvimpp ~/.config/nvim rm -rf ~/.config/nvim/.git ~/.config/nvim/assets ~/.config/nvim/README*.md
- Синхронизируйте плагины с помощью вашего менеджера плагинов (
Packer,Lazyи т.д.) - Установите LSP и утилиты через Mason (выполните
:Masonвнутри Neovim)
# Опционально: чтобы установить clangd, откройте Neovim и выполните:
:MasonInstall clangd cmake-language-serverРекомендуется установить Nerd-шрифт для оптимального отображения символов и глифов в терминале.
Nerd Fonts доступны на nerdfonts.com.
Хорошие варианты для кодирования: Cascadia, FiraCode, DejaVuSansM, Cousine
Папка ~/.config/nvim/lua/custom содержит два примера скриптов, которые помогут вам настроить собственную конфигурацию, не изменяя основную:
_preload.lua_postload.lua
Чтобы начать использовать пользовательские настройки, переименуйте шаблонные файлы:
mv ~/.config/nvim/lua/custom/_preload.lua ~/.config/nvim/lua/custom/preload.lua
mv ~/.config/nvim/lua/custom/_postload.lua ~/.config/nvim/lua/custom/postload.luaЭто позволит добавлять собственные расширения (keybindings, плагины, Lua-код) без изменения главной конфигурации — ваши настройки не потеряются при обновлениях.
- Загружается при старте Neovim.
- Здесь можно задавать глобальные переменные, устанавливать переменные окружения и выполнять базовую инициализацию.
- Пример: включение LSP, загрузка тем, настройка глобальных опций.
Следующие переменные можно изменить в preload.lua:
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
vim.g.colorscheme |
Задаёт цветовую схему Neovim | 'catppuccin' |
vim.g.is_transparency_enabled |
Включает/выключает прозрачность | true |
vim.g.is_lsp_enabled |
Включает/выключает LSP | true |
vim.g.is_git_enabled |
Включает/выключает Git-функции | true |
- Загружается после основной конфигурации.
- Идеально подходит для Keymaps, UI-настроек и тонкой настройки после загрузки.
- Пример: изменение сочетаний клавиш, цветов, статус-лайна.
Ниже приводится обзор основных сочетаний клавиш, определённых в моей конфигурации Neovim. Это поможет быстро освоить наиболее важные команды.
| Сочетание | Назначение |
|---|---|
<Space> |
Клавиша Leader |
| Сочетание | Назначение |
|---|---|
<F2> |
Искать слово под курсором |
<F5> |
Генерация документации Neogen |
<F8> |
Переключение отображения цветов ANSI |
<F9>,<leader>m |
Запуск make |
<F10> |
make clean & make -j3 |
<F12> |
Закрыть буфер |
| Сочетание | Назначение |
|---|---|
<C-k> |
Окно вверх |
<C-j> |
Окно вниз |
<C-h> |
Окно влево |
<C-l> |
Окно вправо |
<C-w> |
Переключение окна |
| Сочетание | Назначение |
|---|---|
<leader>e, <C-e> |
Включить/выключить NeoTree слева |
<leader>E |
Показать NeoTree в отдельном окне |
<leader>gs |
Git-статус в NeoTree |
<C-e> |
Переключить NeoTree слева |
| Сочетание | Назначение |
|---|---|
<leader><leader> |
Последние открытые файлы |
<leader>ff, <C-f> |
Поиск файлов |
<leader>fw, F2 |
Поиск слова под курсором |
<leader>fg, <C-g> |
Live-Grep поиск |
<leader>fb, <C-b> |
Открытые буферы |
<leader>fh |
Поиск по документации |
| Сочетание | Назначение |
|---|---|
<leader>gb |
Ветви Git |
<leader>gc |
Коммиты Git |
<leader>gd |
Git-diffs |
<leader>gd |
Git-статус |
| Сочетание | Назначение |
|---|---|
<leader>/ |
Переключить комментарий |
| Сочетание | Назначение |
|---|---|
| ` | ` |
\ |
Горизонтальный Split |
| Сочетание | Назначение |
|---|---|
<Tab>, <C-right> |
Следующая вкладка |
<S-Tab>, <C-left> |
Предыдущая вкладка |
<C-S-right> |
Переместить вкладку вправо |
<C-S-left> |
Переместить вкладку влево |
| Сочетание | Назначение |
|---|---|
<leader>tt |
Терминал (всплывающее) |
<leader>th |
Терминал (горизонталь) |
<leader>tv |
Терминал (вертикаль) |
| Сочетание | Назначение |
|---|---|
<leader>lx, <C-x> |
Диагностика через Telescope |
<leader>lX |
Диагностика во всплывающем окне |
[d |
Предыдущая диагностика |
]d |
Следующая диагностика |
ö |
Предыдущая диагностика |
ä |
Следующая диагностика |
<leader>la |
Code Actions |
<leader>ld, <C-p> |
Перейти к определению |
<leader>lD, gD |
Перейти к декларации |
<leader>lk, <S-k> |
Hover-документация |
<leader>lr, gr |
Показать ссылки |
<leader>lt, gt |
Показать определение типа |
<leader>lR |
Переименовать |
<leader>lF |
Форматировать |
<C-p> |
Перейти к определению |
<C-o> |
Вернуться назад |
| Сочетание | Назначение |
|---|---|
Y |
Скопировать всю строку |
u |
Отменить действие |
U |
Восстановить |
+ |
Инкремент числа |
- |
Декремент числа |
<leader>n |
Переключить номера строк |
<leader>w |
Сохранить файл |
<leader>x |
Закрыть буфер |
<leader>s |
Сортировать буферы по вкладкам |
<leader>h |
Подсветить слово или выделение |
<leader>H |
Сбросить все подсветки |
<leader>T |
Переключить прозрачность |
<leader>pl |
Открыть Lazy Plugins |
<leader>pm |
Открыть Mason Plugins |
Если у вас есть идеи для новых функций или вы хотите улучшить проект, не стесняйтесь развивать его по своему усмотрению! Желаю приятного и успешного программирования с nvimpp! 💻🚀





