Конфигурация
Расположение
Neovim ищет конфигурацию в ~/.config/nvim/init.lua (Lua) или ~/.config/nvim/init.vim (Vim script). Lua — современный рекомендуемый подход.
Минимальный init.lua
-- Клавиша-лидер (префикс для пользовательских сочетаний)
vim.g.mapleader = " "
vim.g.maplocalleader = " "
-- Номера строк
vim.opt.number = true
vim.opt.relativenumber = true
-- Табуляция и отступы
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.smartindent = true
-- Поиск
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.hlsearch = true
vim.opt.incsearch = true
-- Внешний вид
vim.opt.termguicolors = true
vim.opt.scrolloff = 8
vim.opt.signcolumn = "yes"
vim.opt.cursorline = true
-- Поведение
vim.opt.clipboard = "unnamedplus" -- Использовать системный буфер обмена
vim.opt.undofile = true -- Постоянная история отмен
vim.opt.swapfile = false -- Отключить swap-файлы
vim.opt.updatetime = 250 -- Быстрее автодополнение
vim.opt.timeoutlen = 300 -- Быстрее таймаут последовательностей клавиш
-- Привязки клавиш
vim.keymap.set("n", "<leader>w", ":w<CR>", { desc = "Сохранить файл" })
vim.keymap.set("n", "<leader>q", ":q<CR>", { desc = "Выйти" })
-- Снятие подсветки поиска
vim.keymap.set("n", "<leader>h", ":nohlsearch<CR>", { desc = "Убрать подсветку" })
-- Улучшенная навигация по окнам
vim.keymap.set("n", "<C-h>", "<C-w>h", { desc = "Перейти к левому окну" })
vim.keymap.set("n", "<C-j>", "<C-w>j", { desc = "Перейти к нижнему окну" })
vim.keymap.set("n", "<C-k>", "<C-w>k", { desc = "Перейти к верхнему окну" })
vim.keymap.set("n", "<C-l>", "<C-w>l", { desc = "Перейти к правому окну" })
-- Перемещение строк вверх/вниз в визуальном режиме
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv", { desc = "Сдвинуть выделение вниз" })
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv", { desc = "Сдвинуть выделение вверх" })
-- Центрирование курсора при прокрутке
vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Прокрутить вниз и центрировать" })
vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Прокрутить вверх и центрировать" })
-- Центрирование совпадений поиска
vim.keymap.set("n", "n", "nzzzv", { desc = "Следующее совпадение и центрировать" })
vim.keymap.set("n", "N", "Nzzzv", { desc = "Предыдущее совпадение и центрировать" })
Понимание vim.opt
В Lua-конфигурации vim.opt предоставляет доступ к настройкам Neovim:
vim.opt.number = true -- Булевская настройка
vim.opt.tabstop = 4 -- Числовая настройка
vim.opt.clipboard = "unnamedplus" -- Строковая настройка
Понимание vim.keymap.set
vim.keymap.set(mode, lhs, rhs, opts)
mode:"n"(нормальный),"i"(вставка),"v"(визуальный),"t"(терминал) и т.д.lhs: сочетание клавиш для нажатияrhs: действие для выполненияopts: таблица опций, например{ desc = "..." }