193 lines
8.2 KiB
Lua
193 lines
8.2 KiB
Lua
|
|
|||
|
--------------------------------------------------------------------------[[ФУНКЦИОНАЛ]]--------------------------------------------------------------------------
|
|||
|
|
|||
|
-- Установка клавиши Leader на пробел
|
|||
|
vim.g.mapleader = " "
|
|||
|
|
|||
|
|
|||
|
-- CUSTOM MOVE
|
|||
|
-- NORMAL
|
|||
|
vim.keymap.set('n', 'h', '<nop>', { 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', '<nop>', { 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', '<C-s>', ':w<CR>', { noremap = true, silent = true })
|
|||
|
vim.api.nvim_set_keymap('i', '<C-s>', '<Esc>:w<CR>a', { noremap = true, silent = true })
|
|||
|
|
|||
|
-- Выход из сессии
|
|||
|
vim.api.nvim_set_keymap('n', '<C-q>', ':q!<CR>', { noremap = true, silent = true })
|
|||
|
vim.api.nvim_set_keymap('i', '<C-q>', '<Esc>:q!<CR>', { noremap = true, silent = true })
|
|||
|
|
|||
|
-- Настройка выхода из режима ввода через Atl+i
|
|||
|
vim.api.nvim_set_keymap('i', '<A-i>', '<Esc>', { noremap = true, silent = true })
|
|||
|
|
|||
|
-- Настройка терминала
|
|||
|
vim.api.nvim_set_keymap('n', '<Space>t', ':terminal<CR>', { 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! <gv') -- Сдвиг влево и возврат к выделению
|
|||
|
end
|
|||
|
vim.opt.tabstop = 4
|
|||
|
vim.opt.softtabstop = 4
|
|||
|
vim.opt.shiftwidth = 4
|
|||
|
|
|||
|
-- Привязка клавиш
|
|||
|
vim.keymap.set('v', '<Tab>', tab_selected, { noremap = true, silent = true })
|
|||
|
vim.keymap.set('v', '<S-Tab>', 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', '<Leader>1', "0i# <Esc>$", { noremap = true, silent = true })
|
|||
|
vim.api.nvim_set_keymap('n', '<Leader>2', "0i## <Esc>$", { noremap = true, silent = true })
|
|||
|
vim.api.nvim_set_keymap('n', '<Leader>3', "0i### <Esc>$", { noremap = true, silent = true })
|
|||
|
vim.api.nvim_set_keymap('n', '<Leader>4', "0i#### <Esc>$", { noremap = true, silent = true })
|
|||
|
vim.api.nvim_set_keymap('n', '<Leader>5', "0i##### <Esc>$", { noremap = true, silent = true })
|
|||
|
vim.api.nvim_set_keymap('n', '<Leader>6', "0i###### <Esc>$", { noremap = true, silent = true })
|
|||
|
|
|||
|
-- Бинд для VISUAL MODE: Добавление * в начало и конец выделенного текста
|
|||
|
|
|||
|
vim.api.nvim_set_keymap('v', '<Leader>i', "<Esc>`<i*<Esc>`>a*<Esc>", { noremap = true, silent = true })
|
|||
|
vim.api.nvim_set_keymap('v', '<Leader>b', "<Esc>`<i**<Esc>`>a**<Esc>", { noremap = true, silent = true })
|
|||
|
|
|||
|
vim.api.nvim_set_keymap('v', '<Leader>`', "<Esc>`<i<CR><Up>```bash<Esc>`>a<CR>```<Esc>", { 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("<CR>", 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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|