commit 9b2d3b3b2c6f1af559be442915208fafd36e36f0 Author: СЕМА Date: Fri Feb 28 01:39:45 2025 +0300 PISKA1 diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..ab466b7 --- /dev/null +++ b/init.lua @@ -0,0 +1,16 @@ +require("config.lazy") +require("config.common-settings") + +require("config.mason") +require("config.nvim-tree") +require("config.nvim-treesitter") +require("config.lualine") +require("config.nvim-cmp") +require("config.nvim-lspconfig") +require("config.bufferline") +require("config.vimtex") +require("config.render-markdown") +require("config.gitsigns") +require("config.which-key") +require("config.indent-blankline") +require("config.fzf") diff --git a/lazy-lock.json b/lazy-lock.json new file mode 100644 index 0000000..c81e096 --- /dev/null +++ b/lazy-lock.json @@ -0,0 +1,25 @@ +{ + "FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" }, + "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, + "cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" }, + "fzf-lua": { "branch": "main", "commit": "9b84b53f3297d4912d7eb95b979e9b27e2e61281" }, + "gitsigns.nvim": { "branch": "main", "commit": "4c40357994f386e72be92a46f41fc1664c84c87d" }, + "gruvbox": { "branch": "master", "commit": "f1ecde848f0cdba877acb0c740320568252cc482" }, + "indent-blankline.nvim": { "branch": "master", "commit": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78" }, + "kanagawa.nvim": { "branch": "master", "commit": "cfd67b0e1eeaa04302b8c7eb072253d24bf22d84" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lualine.nvim": { "branch": "master", "commit": "f4f791f67e70d378a754d02da068231d2352e5bc" }, + "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, + "mini.nvim": { "branch": "main", "commit": "e554890210cd29d017d6a0c1b1a46f995dcf9e64" }, + "nvim-cmp": { "branch": "main", "commit": "5a11682453ac6b13dbf32cd403da4ee9c07ef1c3" }, + "nvim-lspconfig": { "branch": "master", "commit": "d793c5cb0206d976a38e70e62479a60ba87722ca" }, + "nvim-tree.lua": { "branch": "master", "commit": "6709463b2d18e77f7a946027917aa00d4aaed6f4" }, + "nvim-treesitter": { "branch": "master", "commit": "8bc635a25f581d42b0a0e5ba8870bd73244dcdea" }, + "nvim-web-devicons": { "branch": "master", "commit": "1020869742ecb191f260818234517f4a1515cfe8" }, + "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, + "render-markdown.nvim": { "branch": "main", "commit": "1cd546e96cb8520a148610ca86596ed238eeb936" }, + "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }, + "vim-nightfly-colors": { "branch": "master", "commit": "c27e76b1adc562b60415ec3688f610206020d64e" }, + "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } +} diff --git a/lua/config/bufferline.lua b/lua/config/bufferline.lua new file mode 100644 index 0000000..cf8e147 --- /dev/null +++ b/lua/config/bufferline.lua @@ -0,0 +1,13 @@ +require("bufferline").setup{} + +-- Настройка биндов узнать что действительно нажимается - перейти в режим вставки нажать и потом необходимое сочетание +vim.keymap.set('n', '', ':BufferLineCycleNext', { noremap = true, silent = true }) +vim.keymap.set('n', '', ':BufferLineCyclePrev', { noremap = true, silent = true }) +vim.keymap.set('n', '', ':bd!', { noremap = true, silent = true }) +-- Настройка сочетаний клавиш для терминала +vim.keymap.set('t', '', ':BufferLineCycleNext', { noremap = true, silent = true }) +vim.keymap.set('t', '', ':BufferLineCyclePrev', { noremap = true, silent = true }) +vim.keymap.set('t', '', ':bd!', { noremap = true, silent = true }) +-- Добавление выхода из режима вставки в терминале +vim.keymap.set('t', '', '', { noremap = true, silent = true }) + diff --git a/lua/config/cmp-nvim-lsp.lua b/lua/config/cmp-nvim-lsp.lua new file mode 100644 index 0000000..233d404 --- /dev/null +++ b/lua/config/cmp-nvim-lsp.lua @@ -0,0 +1,2 @@ +-- Настройка lsp серверов в nvim-lsp config +-- Этот плагин необходим для совместной работы nvim с cmp и lsp сервера diff --git a/lua/config/common-settings.lua b/lua/config/common-settings.lua new file mode 100644 index 0000000..e341dd7 --- /dev/null +++ b/lua/config/common-settings.lua @@ -0,0 +1,192 @@ + +--------------------------------------------------------------------------[[ФУНКЦИОНАЛ]]-------------------------------------------------------------------------- + +-- Установка клавиши 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 + + + + diff --git a/lua/config/fzf.lua b/lua/config/fzf.lua new file mode 100644 index 0000000..cf5366e --- /dev/null +++ b/lua/config/fzf.lua @@ -0,0 +1,31 @@ +require("fzf-lua").setup({ + keymap = { + fzf = { + ["alt-k"] = "down", -- Ctrl + k теперь движется вниз + ["alt-l"] = "up", -- Ctrl + l теперь движется вверх + ["ctrl-j"] = false, -- Отключаем Ctrl + J