← Назад к обзору

Конфигурация

Расположение

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 = "..." }