Найти в Дзене
Vim

NeoVim как IDE для C++ ( часть 2 базовая настройка NeoVim.)

Оглавление

Часть настройки NeoVim мы поручим NvChad который практически в один клик сделает следующее: (при этом время запуска будет около 0,02 ~ 0,07 секунды):

До / после
До / после

-3

  • Набор сниппетов ( сниппеты это вставка кода по сокращенной команде. Например: введя main мы тут же можем получить готовый базовый код, а можем не получить, все зависит от наших пожеланий.) https://github.com/rafamadriz/friendly-snippets
-4
-5

-6

Как видим довольно жирный функционал, и на мой взгляд ничего лишнего. Вначале я было думал что подсказка клавиш не нужна, но со временем она мне не раз и не два помогала.

Установка шрифтов

Самый отчаянный путь установить шрифты с GitHub, так как шрифты весят под 20 гигабайт! Делать этого не рекомендуется. Даю ссылку на GitHub так как ссылка на другой какой либо сайт может оказаться не доступным, через какое то время. https://github.com/ryanoasis/nerd-fonts/blob/master/readme_ru.md

git clone https://github.com/ryanoasis/nerd-fonts
cd nerd-fonts
sudo ./install.sh


для установки конкретного шрифта:

sudo ./install.sh <имя-шрифта>

А можно скачать из категории https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts или зайти на сайт https://www.nerdfonts.com/font-downloads и выбрать тот шрифт который нам понравиться. Копируем понравившийся шрифт в

/home/имя_пользователя/.fonts

Я поставил себе Inconsolata LGC Nerd Font, AnonymicePro Nerd Font

Что бы скачать отдельную папку в github надо заменить github на ssgithub
Например нам нужен шрифт FiraMono по этому пути:
https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/FiraMono
заменяем его на
https://ssgithub.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/FiraMono
скачиваем и закидываем папку с шрифтами в ~/.fonts

Установка NvChad

Если мы устанавливаем не на голый NeoVim, то мы можем сохранить свои настройки (Позже напишу как иметь несколько конфигураций NeoVim):

mv ~/.config/nvim ~/.config/nvim.backup
rm -rf ~/.local/share/nvim

Сама установка NVChad

git clone https://github.com/NvChad/starter ~/.config/nvim
nvim

После запуска NeoVim, сразу же начнется устанавливаться плагины. Что бы закрыть окно менеджера плагинов Lazy надо нажать 'q'

Настройка темы

для выбора темы нажимаем <пробел th>

Настраиваем NeoVim что бы он показывал ошибки в коде

Переходим в папку с конфигурацией NeoVim и запускаем его.

cd ~/.config/nvim
nvim

Внутри NeoVim нажимаем <ctrl n> таким образом мы открываем панель со списком файлов сбоку

клавишами jk переходим к папке lua/plugins/init.lua раскомментируем все строки и вносим некоторые правки в этот файл. Для этого V - выделяем нужные строки jk затем gc так же можно и закомментировать код. Для того что бы закомментировать одну строку gcc

-7

Содержимое файла/home/Имя_пользователя/.config/nvim/lua/plugins/init.lua

return {
{
"stevearc/conform.nvim",
-- event = 'BufWritePre', -- uncomment for format on save
config = function()
require "configs.conform"
end,
},

{
"neovim/nvim-lspconfig",
config = function()
require("nvchad.configs.lspconfig").defaults()
require "configs.lspconfig"
end,
},
--
{
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"lua-language-server", "stylua", "clangd"
-- "html-lsp", "css-lsp" , "prettier"
},
},
},
-- расширенная подсветка синтаксиса
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"vim", "lua", "vimdoc",
"html", "css", "c", "cpp"
},
},
},
}

Так же правим файл:
/home/Имя_пользователя/.config/nvim/lua/configs/lspconfig.lua

-8
lspconfig.clangd.setup{
on_attach = function (client, bufnr)
client.server_capabilities.signatureHelpProvider = false
on_attach(client, bufnr)
end,
capabilities = capabilities
}

Запускаем NeoVim

Кстати, что бы красиво отформатировать текст. ( V - выделяем нужный блок кода клавишами <jk> . и нажимаем знак равно < = > . Можно это сделать проще, от текущей строки и ниже. <=G>)

nvim

в командной строки NeoVim вводим команду для установки нужных нам компонентов (закрыть 'q'):

:MasonUpdate
:MasonInstallAll


Если вы видите подобную ошибку:

-9

То надо установить npm

sudo apt install npm

в NeoVim

:MasonInstallAll

может появиться ошибка что не найден unzip, устанавливаем его.

sudo apt install unzip

-10

теперь запускаем в NeoVim

:MasonInstallAll

теперь все должно быть отлично.

-11

Открываем наш main.cpp и проверяем что бы была подсветка ошибок, если вы получаете ошибку:

-12

значит вы просто раскоментировали код и забыли добавить clangd в mason. Вернитесь к предыдущим шагам.

"williamboman/mason.nvim",
opts = {
ensure_installed = {
"lua-language-server", "stylua", "clangd"
-- "html-lsp", "css-lsp" , "prettier"
},

На этом этапе у нас должна начать работать проверка кода. Создадим тестовый файл main.cpp. Вносим ряд ошибок, все отлично ошибки показывает. Что бы увидеть список ошибок что бы по ним перемещаться <leader (пробел)>ds

-13

Первый шаг настройки сделан.

Что бы включить проверку кода на С++23 надо поднастроить clangd


mkdir ~/.config/clangd
cd ~/.config/clangd
nvim config.yaml

вставляем такие параметры (перед Add должен стоять tab):

CompileFlags:
Add: [-std=c++23]
-14

Проверяем. Создаем код с++ 23

#include <iostream>
#include <print>
#include <ranges>

auto fibonachi = [] (this auto self, unsigned n)
{
if (n<2) {return n;}
return self (n-1) + self (n-2);
};

const int& foo() {
return 42;
}


int main ()
{
std::print("{0} {2}{1}!\n", "Привет", 23, "C++");
std::println ("{}",fibonachi(5));
}
-15

Отлично. Проверку работы кода настроили.

Проверяем заодно что наш GCC может компилировать С++ 26. Теперь возврат временного значения из функции это не предупреждение, а ошибка. Спрашивается, что так долго ждали? Исправляем ошибку, запускаем. Все супер.

-16

убеждаемся что не зря были наши старания. Запускаем gcc из репозитория... И он не то что с++26 не справился, он не работает даже с++23.

-17


Назад часть 1 установка GCC и NeoVim

Далее Пользовательская настройка NeoVim. Буфер обмена, переводчик.