commit c93fed704b7414cf34b9f8beb9f6dd3ae97d2d75 Author: pivodevat Date: Sun Jan 25 00:42:10 2026 +0300 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e033bc6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +lazy-lock.json diff --git a/README.md b/README.md new file mode 100644 index 0000000..4a9dbd1 --- /dev/null +++ b/README.md @@ -0,0 +1,187 @@ +# AeroNvim + +- Рендеринг markdown +- Размытый поиск файлов +- Поиск по содержимому файлов +- .ignore - игнорирование вложенных файлов в поиске + +# Требования + +- [fzf](https://github.com/junegunn/fzf?tab=readme-ov-file#installation) - Пакет для fuzzy поиска (необходим) +- [chafa](https://github.com/hpjansson/chafa) - Предпросмотр фото прямо в терминале (необязательно) +- [zoxide](https://github.com/ajeetdsouza/zoxide) - Пакет для быстрого перехода между директориями (необязательно) +- Также желательно настроить xdg-open/open на открытие файлов типа .docx, pdf и тд. для полной функциональности (nvim-tree позволит запускать файлы в системных приложениях из nvim) + + +# Установленные плагины + +## Менеджер заметок + +#### Функционал + +- [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) - Обработка синтаксиса +- [nvim-cmp](https://github.com/hrsh7th/nvim-cmp) - Система автодополнения +- [fzf-lua](https://github.com/ibhagwan/fzf-lua) - Fuzzy finder +- [cmp-nvim-lsp](https://github.com/hrsh7th/cmp-nvim-lsp) - Источник данных для nvim-cmp +- [nvim-tree.lua](https://github.com/kyazdani42/nvim-tree.lua) - Проводник файлов +- [plenary.nvim](https://github.com/nvim-lua/plenary.nvim) - Библиотека Lua функций +- [mkdx](https://github.com/SidOfc/mkdx) - Утилита для работы с Markdown + +#### Визуал + +- [render-markdown.nvim](https://github.com/MeanderingProgrammer/render-markdown.nvim) - Визуализация Markdown (рекомендуется) +- [mutton.vim](https://github.com/gabenespoli/vim-mutton) - ограничение длины строки: отступы слева и справа (рекомендуется) +- [nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons) - Иконки (рекомендуется) +- [mini.nvim](https://github.com/echasnovski/mini.nvim) - Набор компактных плагинов (опциональная зависимость) + +## Дополнения + +Данные плагины я установил для себя, чтобы прокачать свой Neovim, но для создания Obsivim необходимы только те, которые представлены выше. Остальные плагины идут по желанию. + +#### Функционал + +- [FixCursorHold.nvim](https://github.com/antoinemadec/FixCursorHold.nvim) - Исправление проблемы CursorHold +- [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim) - Статусная строка +- [mason.nvim](https://github.com/williamboman/mason.nvim) - Менеджер пакетов LSP +- [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) - Конфигурация LSP серверов +- [cmp-nvim-lsp-signature-help](https://github.com/hrsh7th/cmp-nvim-lsp-signature-help) - Подсказки для сигнатур функций +- [suda.vim](https://github.com/lambdalisue/suda.vim) - Редактирование файлов с правами sudo +- [zoxide.vim](https://github.com/nanotee/zoxide.vim) - Интеграция zoxide для быстрого перехода между директориями + +#### Визуал + +- [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim) - Визуализация отступов +- [tokyonight.nvim](https://github.com/folke/tokyonight.nvim) - Цветовая схема Tokyo Night +- [gruvbox](https://github.com/morhetz/gruvbox) - Цветовая схема Gruvbox +- [vim-nightfly-colors](https://github.com/bluz71/vim-nightfly-colors) - Цветовая схема Nightfly +- [kanagawa.nvim](https://github.com/rebelot/kanagawa.nvim) - Цветовая схема Kanagawa +- [which-key.nvim](https://github.com/folke/which-key.nvim) - Показывает доступные комбинации клавиш +- [noice.nvim](https://github.com/folke/noice.nvim) - Улучшение командной строки и сообщений + + + +# Структура + +```bash +. +├── init.lua +├── lazy-lock.json +├── lua +│   ├── config +│   │   ├── bufferline.lua +│   │   ├── cmp-nvim-lsp.lua +│   │   ├── common-settings.lua +│   │   ├── fzf.lua +│   │   ├── indent-blankline.lua +│   │   ├── lazy.lua +│   │   ├── lualine.lua +│   │   ├── mason.lua +│   │   ├── mkdx.lua +│   │   ├── noice.lua +│   │   ├── nvim-cmp.lua +│   │   ├── nvim-lspconfig.lua +│   │   ├── nvim-tree.lua +│   │   ├── nvim-treesitter.lua +│   │   ├── render-markdown.lua +│   │   ├── telescope.lua +│   │   ├── vimtex.lua +│   │   └── which-key.lua +│   └── plugins.lua +└── README.md + +3 directories, 22 files + +``` + + + +# Установка + +### linux +```bash +mv ~/.config/nvim ~/.config/bkp_nvim +git clone ssh://git@root-kit.ru:17458/sam/Obsivim.git nvim +nvim . +``` +*также не забудьте установить пакеты fzf и chafa(если нужно)* + + + +# Сочетания клавиш + +Leader - пробел + +### Поиск (fzf.lua) + +- Leader + f - поиск файлов в текущей директории (files) +- Leader + o - поиск недавних файлов (old files) +- Leader + g - поиск файлов по содержимому (grep) +- Leader + z - переход между директориями (zoxide) +- Leader + r - переход между буферами + + + +### Markdown-форматирование(mkdx) + +- Leader + i - курсивный текст +- Leader + b - жирный текст +- Leader + = - следующее состояние чекбокса +- Leader + - - предыдущее состояние чекбокса +- Leader + ] - повышение заголовка +- Leader + [ - понижение заголовка +- Leader + ' - переключить цитату +- Leader + ` - обернуть инлайн кодом +- Leader + k - переключить горячие клавиши +- Leader + ll - переключить элемент списка +- Leader + lc - переключить элемент чеклиста +- Leader + / - сгенерировать/обновить TOC +- Leader + s - перечеркнутый текст +- Leader + ln - обернуть ссылкой +- Leader + , - преобразовать CSV в таблицу (в режиме визуального выделения) +- Leader + j - перейти к заголовку +- Leader + I - быстрый TOC +- Leader + L - быстрая проверка мертвых фрагментов ссылок +- Leader + gf - перейти к файлу +- Leader + gx - открыть внешний файл +- Leader + gl - открыть ссылку +- Tab - отступ нумерованного элемента списка +- Shift + Tab - уменьшение отступа нумерованного элемента списка +- ]] - переход к следующему заголовку +- [[ - переход к предыдущему заголовку + +Дополнительные команды для режима вставки: +- Бедным детям в Уганде нужна ваша помощь! +> +>Наберите :help iccf для дополнительной информации + + + diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..a698c76 --- /dev/null +++ b/init.lua @@ -0,0 +1,22 @@ +require("config.lazy") + +require("config.common-settings") + +--require("config.nvim-cmp") +require("config.mason") +require("config.nvim-tree") +--require("config.render-markdown") +require("config.markview") +require("config.nvim-treesitter") +require("config.lualine") +require("config.nvim-lspconfig") + +require("config.indent-blankline") +--require("config.fzf") +require("config.mkdx") +--require("config.mutton") + + +--require('config.cigan') + +vim.api.nvim_set_keymap('n', '', [[lua require('config.cigan').run_script()]], { noremap = true, silent = true }) diff --git a/lua/config/bufferline.lua b/lua/config/bufferline.lua new file mode 100644 index 0000000..651cbe4 --- /dev/null +++ b/lua/config/bufferline.lua @@ -0,0 +1,18 @@ +require("bufferline").setup{ + options = { + tab_size = 30 + } + +} + +-- Настройка биндов узнать что действительно нажимается - перейти в режим вставки нажать и потом необходимое сочетание +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/cigan.lua b/lua/config/cigan.lua new file mode 100644 index 0000000..7353f07 --- /dev/null +++ b/lua/config/cigan.lua @@ -0,0 +1,31 @@ + +local M = {} + +function M.run_script() + -- Проверяем, что открыт именно файл ~/desktop/govno/ui.md + local current_file = vim.fn.expand('%:p') -- Полный путь к текущему файлу + local target_file = vim.fn.expand('~/desktop/govno/ui.md') + + if current_file ~= target_file then + print("Ошибка: Открыт не тот файл. Должен быть открыт " .. target_file) + return + end + + -- Сохраняем файл + vim.cmd('w') + + -- Запускаем скрипт + print("Ожидайте ответа") + local script_path = vim.fn.expand('~/dev/python/interface.py') + + vim.fn.jobstart({'python3', script_path}, { + on_exit = function() + vim.cmd('e') -- Перезагружаем файл после завершения скрипта + vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), 'n', false) + print("Отвечено!") + end + }) + +end + +return M 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..2e135b2 --- /dev/null +++ b/lua/config/common-settings.lua @@ -0,0 +1,190 @@ + +--------------------------------------------------------------------------[[FUNC]]------------------------------- + +-- Установка клавиши Leader на пробел +vim.g.mapleader = " " + +vim.cmd([[autocmd BufRead,BufNewFile config_zero setfiletype i3config]]) +-- 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 }) + + + +-- buffers +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 }) + + +-- Настройка выхода из режима ввода через Atl+i +vim.api.nvim_set_keymap('i', '', '', { noremap = true, silent = true }) +-- Настройка терминала +vim.api.nvim_set_keymap('t', '', '', { noremap = true, silent = true }) + + +-- Время ожидания ввода комбинаций с +vim.o.timeoutlen = 260 + + + +-- СИСТЕМНЫЙ БУФЕР +-- Копирование в системный буфер +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 + + + + +--------------------------------------------------------------------------[[VISUAL]]-------------------------------------------------------------------------- +--vim.cmd("colorscheme retrobox") +--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.cmd("colorscheme randomhue") +--vim.cmd("colorscheme kanagawa") +--vim.cmd("colorscheme wildcharm") +vim.cmd("colorscheme retrobox") + + + + + + + + + + +--status line disabling +vim.opt.laststatus = 0 +vim.defer_fn(function() vim.opt.laststatus = 0 end, 10) -- Отключает строку состояния +vim.defer_fn(function() vim.opt.laststatus = 0 end, 35) -- Отключает строку состояния +vim.defer_fn(function() vim.opt.laststatus = 0 end, 150) -- Отключает строку состояния +vim.defer_fn(function() vim.opt.laststatus = 0 end, 350) -- Отключает строку состояния +vim.defer_fn(function() vim.opt.laststatus = 0 end, 450) -- Отключает строку состояния +vim.defer_fn(function() vim.opt.laststatus = 0 end, 700) -- Отключает строку состояния +vim.defer_fn(function() vim.opt.laststatus = 0 end, 900) -- Отключает строку состояния +vim.defer_fn(function() vim.opt.laststatus = 0 end, 1300) -- Отключает строку состояния + +local laststatus_values = {0, 3} +local current_index = 1 +vim.keymap.set('n', '', function() + current_index = current_index % #laststatus_values + 1 + vim.opt.laststatus = laststatus_values[current_index] +end, { noremap = true, silent = true }) + + + + + + +--vim.opt.number = true -- Включить абсолютную нумерацию слева +--vim.opt.relativenumber = true -- Включить относительную нумерацию справа + + + + + + + +vim.api.nvim_set_hl(0, "SignColumn", { bg = "None", fg = "#abb2bf" }) -- прозрачный фон +-- Определение функции для переключения number и relativenumber +local function toggle_number_and_relativenumber() + local number = vim.opt.number:get() + local relativenumber = vim.opt.relativenumber:get() + + if number and relativenumber then + -- Если обе включены, выключаем их + vim.opt.number = false + vim.opt.relativenumber = false + else + -- Если обе выключены, включаем их + vim.opt.number = true + vim.opt.relativenumber = true + end +end + +-- Привязка функции к n +vim.keymap.set('n', 'n', toggle_number_and_relativenumber, { desc = 'Toggle number and relativenumber' }) + +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.linebreak = true + + +vim.opt.number = true +vim.opt.relativenumber = true diff --git a/lua/config/fzf.lua b/lua/config/fzf.lua new file mode 100644 index 0000000..eaa46c0 --- /dev/null +++ b/lua/config/fzf.lua @@ -0,0 +1,51 @@ + +local actions = require("fzf-lua.actions") +require("fzf-lua").setup({ + + keymap = { + fzf = { + ["alt-k"] = "down", -- Ctrl + k теперь движется вниз + ["alt-l"] = "up", -- Ctrl + l теперь движется вверх + ["ctrl-j"] = false, -- Отключаем Ctrl + J