SexNvim/lua/config/common-settings.lua
2025-02-28 01:39:45 +03:00

193 lines
8.2 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--------------------------------------------------------------------------[[ФУНКЦИОНАЛ]]--------------------------------------------------------------------------
-- Установка клавиши 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