Часть настройки NeoVim мы поручим NvChad который практически в один клик сделает следующее: (при этом время запуска будет около 0,02 ~ 0,07 секунды):
- 56 различных цветовых тем. https://github.com/NvChad/base46
- Гибкий поиск по именам файлов а так же по содержимому файлов с предпросмотром документов https://github.com/nvim-telescope/telescope.nvim
- Древовидный файловый менеджер внутри NeoVim https://github.com/nvim-tree/nvim-tree.lua Еще один альтернативный файловый менеджер, который позволяет редактировать вашу файловую систему как обычный буфер NeoVim. https://github.com/stevearc/oil.nvim
- Строка состояния которая покажет текущую ветку в Git а так же количество изменений с последнего коммита.
- Более удобная буферная строка (та что отображает открытые буферы и вкладки) https://github.com/NvChad/ui
- Различные Иконки для маркировки файлов и интерфейса https://github.com/nvim-tree/nvim-web-devicons
- Git (Асинхронная работа. Код который был изменен выделяется цветовой полоской сбоку, навигация между блоками изменений, отображение удаленных строк и прочее) https://github.com/lewis6991/gitsigns.nvim
- Автозаполнение https://github.com/hrsh7th/nvim-cmp
- Подсветка синтаксиса https://github.com/nvim-treesitter/nvim-treesitter
- Автоматическое закрытие фигурных скобок и html тегов https://github.com/windwp/nvim-autopairs
- Цветовое выделение отступов. Что бы лучше понимать на каком уровне вложенности вы сейчас находитесь. https://github.com/lukas-reineke/indent-blankline.nvim
- Набор сниппетов ( сниппеты это вставка кода по сокращенной команде. Например: введя main мы тут же можем получить готовый базовый код, а можем не получить, все зависит от наших пожеланий.) https://github.com/rafamadriz/friendly-snippets
Как видим довольно жирный функционал, и на мой взгляд ничего лишнего. Вначале я было думал что подсказка клавиш не нужна, но со временем она мне не раз и не два помогала.
Установка шрифтов
Самый отчаянный путь установить шрифты с 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
Содержимое файла/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
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
Если вы видите подобную ошибку:
То надо установить npm
sudo apt install npm
в NeoVim
:MasonInstallAll
может появиться ошибка что не найден unzip, устанавливаем его.
sudo apt install unzip
теперь запускаем в NeoVim
:MasonInstallAll
теперь все должно быть отлично.
Открываем наш main.cpp и проверяем что бы была подсветка ошибок, если вы получаете ошибку:
значит вы просто раскоментировали код и забыли добавить clangd в mason. Вернитесь к предыдущим шагам.
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"lua-language-server", "stylua", "clangd"
-- "html-lsp", "css-lsp" , "prettier"
},
На этом этапе у нас должна начать работать проверка кода. Создадим тестовый файл main.cpp. Вносим ряд ошибок, все отлично ошибки показывает. Что бы увидеть список ошибок что бы по ним перемещаться <leader (пробел)>ds
Первый шаг настройки сделан.
Что бы включить проверку кода на С++23 надо поднастроить clangd
mkdir ~/.config/clangd
cd ~/.config/clangd
nvim config.yaml
вставляем такие параметры (перед Add должен стоять tab):
CompileFlags:
Add: [-std=c++23]
Проверяем. Создаем код с++ 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));
}
Отлично. Проверку работы кода настроили.
Проверяем заодно что наш GCC может компилировать С++ 26. Теперь возврат временного значения из функции это не предупреждение, а ошибка. Спрашивается, что так долго ждали? Исправляем ошибку, запускаем. Все супер.
убеждаемся что не зря были наши старания. Запускаем gcc из репозитория... И он не то что с++26 не справился, он не работает даже с++23.
Назад часть 1 установка GCC и NeoVim
Далее Пользовательская настройка NeoVim. Буфер обмена, переводчик.