local default_opts = { noremap = true, silent = true } local function map(mode, l, r, opts) opts = opts or default_opts -- opts.buffer = bufnr vim.keymap.set(mode, l, r, opts) end ----------------------------------------------------------- -- Базовые ----------------------------------------------------------- -- Командная клавиша vim.keymap.set("n", " ", "", { silent = true, remap = false }) vim.g.mapleader = " " -- Быстрое перемещение map("n", "", "10j") map("n", "", "10k") -- Быстрое сохранение map("n", "w", "write") map("n", "q", "quit") -- 'Нажимает' на ESC при быстром нажатии jj -- map("i", "оо", "") -- map("i", "jj", "") -- Переход в режим ввода на русском при нажатии R vim.keymap.set("n", "R", function() os.execute("xkb-switch -s ru") vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("i", true, true, true), "n", true) end, { noremap = true, silent = true }) local returnFromInsert = function() vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, true, true), "n", true) os.execute("xkb-switch -s us") end vim.keymap.set("i", "jj", returnFromInsert, { noremap = true, silent = true }) vim.keymap.set("i", "оо", returnFromInsert, { noremap = true, silent = true }) -- Отключение стрелочек. Использовать hjkl -- map("", "", ':echoe "Use k"', { noremap = true, silent = false }) -- map("", "", ':echoe "Use j"', { noremap = true, silent = false }) -- map("", "", ':echoe "Use h"', { noremap = true, silent = false }) -- map("", "", ':echoe "Use l"', { noremap = true, silent = false }) -- Ресайз окон map("n", "", "resize +2") map("n", "", "resize -2") map("n", "", "vertical resize +2") map("n", "", "vertical resize -2") -- Перемещение между окнами map("n", "", "h") map("n", "", "j") map("n", "", "k") map("n", "", "l") map("n", "st", ":set invlist") ----------------------------------------------------------- -- Spell Check ----------------------------------------------------------- -- Включить/выключить проверку map("n", "ss", "set spell!", { desc = "Toggle spell check" }) -- Навигация по ошибкам map("n", "]s", "normal! ]s", { desc = "Next spelling error" }) map("n", "[s", "normal! [s", { desc = "Previous spelling error" }) -- Добавить слово в словарь map("n", "sda", "normal! zg", { desc = "Add to dictionary" }) map("n", "sdd", "normal! zw", { desc = "Mark as wrong" }) -- Показать варианты исправления map("n", "sp", "normal! z=", { desc = "Show spelling suggestions" }) -- Русская раскладка в справках vim.cmd([[ " Русские подсказки для проверки орфографии set spellcapcheck= " Отключить проверку заглавных букв для русского ]]) -- Альтернативный путь к словарям (если стандартный не работает) local spell_paths = { "/usr/share/hunspell/", "/usr/share/myspell/dicts/", "/usr/share/myspell/", vim.fn.expand("~/.local/share/nvim/spell/"), } -- Проверить и установить словари если нужно local function setup_spell() local has_dicts = false for _, path in ipairs(spell_paths) do if vim.fn.isdirectory(path) == 1 then vim.opt.spellfile = vim.fn.glob(path .. "/*.add") has_dicts = true break end end if not has_dicts then vim.notify( "Словари не найдены. Установите: sudo apt install hunspell-ru hunspell-en-us", vim.log.levels.WARN ) end end -- Вызвать настройку при запуске vim.defer_fn(setup_spell, 100) ----------------------------------------------------------- -- F1 .. F12 ----------------------------------------------------------- -- По F1 очищаем последний поиск с подсветкой -- map("n", "", ":nohl") map("n", "nh", ":nohl") -- разные вариации нумераций строк, можно переключаться map("n", "", ':exec &nu==&rnu? "se nu!" : "se rnu!"') -- Проверка орфографии для русского и английского языка map("n", "", ":set spell!") map("i", "", ":set spell!")