--------------------------------------------------------------------------[[ФУНКЦИОНАЛ]]-------------------------------------------------------------------------- -- Установка клавиши Leader на пробел vim.g.mapleader = " " -- CUSTOM MOVE -- NORMAL vim.keymap.set('n', 'h', '', { noremap = true, silent = true }) vim.keymap.set('n', 'j', 'h', { noremap = true, silent = true }) vim.keymap.set('n', 'k', 'j', { noremap = true, silent = true }) vim.keymap.set('n', 'l', 'k', { noremap = true, silent = true }) vim.keymap.set('n', ';', 'l', { noremap = true, silent = true }) -- VISUAL vim.keymap.set('v', 'h', '', { noremap = true, silent = true }) vim.keymap.set('v', 'j', 'h', { noremap = true, silent = true }) vim.keymap.set('v', 'k', 'j', { noremap = true, silent = true }) vim.keymap.set('v', 'l', 'k', { noremap = true, silent = true }) vim.keymap.set('v', ';', 'l', { noremap = true, silent = true }) -- Настройка сохранения на Ctrl+S vim.api.nvim_set_keymap('n', '', ':w', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', ':wa', { noremap = true, silent = true }) -- Выход из сессии vim.api.nvim_set_keymap('n', '', ':q!', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', ':q!', { noremap = true, silent = true }) -- Настройка выхода из режима ввода через Atl+i vim.api.nvim_set_keymap('i', '', '', { noremap = true, silent = true }) -- Настройка терминала vim.api.nvim_set_keymap('n', 't', ':terminal', { noremap = true, silent = true }) -- установить время ожидания в 200 миллисекунд vim.o.timeoutlen = 300 -- СИСТЕМНЫЙ БУФЕР -- Копирование в системный буфер vim.api.nvim_set_keymap('v', 'y', '"+y', { noremap = true, silent = true }) -- Вставка из системного буфера vim.api.nvim_set_keymap('n', 'p', '"+p', { noremap = true, silent = true }) -- Вырезание в системный буфер vim.api.nvim_set_keymap('v', 'x', '"+x', { noremap = true, silent = true }) -- Включаем поддержку undo vim.opt.undofile = true -- Указываем директорию для хранения файлов undo vim.opt.undodir = "/tmp/nvim-changes/" -- Функции для табуляции выделенной области local function tab_selected() vim.cmd('normal! >gv') -- Сдвиг вправо и возврат к выделению end local function shift_tab_selected() vim.cmd('normal! ', tab_selected, { noremap = true, silent = true }) vim.keymap.set('v', '', shift_tab_selected, { noremap = true, silent = true }) --[[ Поиск ]]-- -- Игнорировать регистр при поиске vim.opt.ignorecase = true -- Не игнорировать регистр, если есть символы в верхнем регистре vim.opt.smartcase = true -- Подсвечивать найденные текстовые объекты vim.opt.showmatch = true -- Бинд для headings vim.api.nvim_set_keymap('n', '1', "0i# $", { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '2', "0i## $", { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '3', "0i### $", { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '4', "0i#### $", { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '5', "0i##### $", { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '6', "0i###### $", { noremap = true, silent = true }) -- Бинд для VISUAL MODE: Добавление * в начало и конец выделенного текста vim.api.nvim_set_keymap('v', 'i', "``>a*", { noremap = true, silent = true }) vim.api.nvim_set_keymap('v', 'b', "``>a**", { noremap = true, silent = true }) vim.api.nvim_set_keymap('v', '`', "````bash`>a```", { noremap = true, silent = true }) function Table(mode, n) if mode == "r" then -- Режим строки (row) vim.cmd("normal! `<") -- Переход в начало выделения local k = vim.fn.strlen(vim.fn.getline(".")) -- Считаем количество символов в строке vim.cmd("normal! `>") -- Переход в конец выделения vim.cmd("startinsert") -- Вход в режим вставки for _ = 1, n do vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), "n", false) -- Нажимаем Enter vim.api.nvim_put({ string.rep("| ", k) }, "c", false, true) -- Вставляем "| " k раз end vim.cmd("stopinsert") -- Выход из режима вставки elseif mode == "c" then -- Режим столбца (column) local start_row, _ = unpack(vim.fn.getpos "'<") -- Получаем начальную позицию выделения local end_row, _ = unpack(vim.fn.getpos "'>") -- Получаем конечную позицию выделения local k = end_row - start_row + 1 -- Считаем количество строк в выделенной области for _ = 1, n do vim.cmd("normal! `<") -- Переход в начало выделения vim.cmd("normal! $") -- Переход в конец строки vim.cmd("startinsert") -- Вход в режим вставки vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(" |", true, false, true), "n", false) -- Пишем " |" vim.cmd("stopinsert") -- Выход из режима вставки for _ = 1, k - 2 do vim.cmd("normal! k") -- Перемещение на строку выше vim.cmd("startinsert") -- Вход в режим вставки vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(" |", true, false, true), "n", false) -- Пишем " |" vim.cmd("stopinsert") -- Выход из режима вставки end vim.cmd("normal! k") -- Перемещение на строку выше vim.cmd("startinsert") -- Вход в режим вставки vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("-|", true, false, true), "n", false) -- Пишем "-|" vim.cmd("stopinsert") -- Выход из режима вставки end else print("Invalid mode. Use 'r' for row or 'c' for column.") end end --------------------------------------------------------------------------[[ВИЗУАЛ]]-------------------------------------------------------------------------- --vim.cmd("colorscheme tokyonight") --vim.cmd("colorscheme "gruvbox") --vim.cmd("colorscheme astra") -- Применение темы --vim.cmd("colorscheme kanagawa") -- Основная схема --vim.cmd("colorscheme kanagawa-wave") -- Более светлая версия --vim.cmd("colorscheme kanagawa-dragon")-- Более тёмная версия --vim.cmd("colorscheme kanagawa-lotus") -- Альтернативная палитра vim.cmd("colorscheme nightfly") -- Включение относительной нумерации строк vim.opt.number = true -- Включить абсолютную нумерацию строк vim.opt.relativenumber = true -- Включить относительную нумерацию строк vim.cmd [[ autocmd TermOpen * setlocal nonumber norelativenumber ]] vim.opt.cmdheight = 0 -- disable netrw at the very start of your init.lua vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 -- Включаем поддержку цветовой схемы vim.opt.termguicolors = true vim.opt.textwidth = 100