init
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
lazy-lock.json
|
||||
187
README.md
Normal file
187
README.md
Normal file
@ -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 - уменьшение отступа нумерованного элемента списка
|
||||
- ]] - переход к следующему заголовку
|
||||
- [[ - переход к предыдущему заголовку
|
||||
|
||||
Дополнительные команды для режима вставки:
|
||||
- <tab - вставить горячие клавиши
|
||||
- enter - обработчик enter
|
||||
- shift+enter - обработчик shift+enter
|
||||
- ctrl+n - обработчик автодополнения ctrl+n
|
||||
- ctrl+p - обработчик автодополнения ctrl+p
|
||||
|
||||
### Остальное
|
||||
|
||||
- Leader + tab - скрыть строку состояния
|
||||
- Leader + n - скрыть нумерацию строк
|
||||
|
||||
***Так же для своего хранилища заметок можно настроить файл .ignore***
|
||||
Например для всех файлов кроме формата .md:
|
||||
|
||||
```git {.ignore}
|
||||
# Игнорировать все файлы
|
||||
*
|
||||
|
||||
# Кроме .md
|
||||
!*.md
|
||||
|
||||
# Разрешить все папки
|
||||
!*/
|
||||
```
|
||||
|
||||
|
||||
|
||||
###### Помогите
|
||||
|
||||
>Бедным детям в Уганде нужна ваша помощь!
|
||||
>
|
||||
>Наберите :help iccf<Enter> для дополнительной информации
|
||||
|
||||
|
||||
|
||||
22
init.lua
Normal file
22
init.lua
Normal file
@ -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', '<leader><CR>', [[<cmd>lua require('config.cigan').run_script()<CR>]], { noremap = true, silent = true })
|
||||
18
lua/config/bufferline.lua
Normal file
18
lua/config/bufferline.lua
Normal file
@ -0,0 +1,18 @@
|
||||
require("bufferline").setup{
|
||||
options = {
|
||||
tab_size = 30
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-- Настройка биндов узнать что действительно нажимается - перейти в режим вставки нажать <c-v> и потом необходимое сочетание
|
||||
vim.keymap.set('n', '<A-;>', ':BufferLineCycleNext<CR>', { noremap = true, silent = true })
|
||||
vim.keymap.set('n', '<A-j>', ':BufferLineCyclePrev<CR>', { noremap = true, silent = true })
|
||||
vim.keymap.set('n', '<A-w>', ':bd!<CR>', { noremap = true, silent = true })
|
||||
-- Настройка сочетаний клавиш для терминала
|
||||
vim.keymap.set('t', '<A-;>', '<C-\\><C-N>:BufferLineCycleNext<CR>', { noremap = true, silent = true })
|
||||
vim.keymap.set('t', '<A-j>', '<C-\\><C-N>:BufferLineCyclePrev<CR>', { noremap = true, silent = true })
|
||||
vim.keymap.set('t', '<A-w>', '<C-\\><C-N>:bd!<CR>', { noremap = true, silent = true })
|
||||
-- Добавление выхода из режима вставки в терминале
|
||||
vim.keymap.set('t', '<A-i>', '<C-\\><C-N>', { noremap = true, silent = true })
|
||||
|
||||
31
lua/config/cigan.lua
Normal file
31
lua/config/cigan.lua
Normal file
@ -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("<S-g>", true, false, true), 'n', false)
|
||||
print("Отвечено!")
|
||||
end
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
return M
|
||||
2
lua/config/cmp-nvim-lsp.lua
Normal file
2
lua/config/cmp-nvim-lsp.lua
Normal file
@ -0,0 +1,2 @@
|
||||
-- Настройка lsp серверов в nvim-lsp config
|
||||
-- Этот плагин необходим для совместной работы nvim с cmp и lsp сервера
|
||||
190
lua/config/common-settings.lua
Normal file
190
lua/config/common-settings.lua
Normal file
@ -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', '<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 })
|
||||
|
||||
|
||||
|
||||
-- buffers
|
||||
vim.keymap.set("n", "<C-w>j", "<C-w>h", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<C-w>k", "<C-w>j", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<C-w>l", "<C-w>k", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<C-w>;", "<C-w>l", { noremap = true, silent = true })
|
||||
|
||||
|
||||
-- Настройка выхода из режима ввода через Atl+i
|
||||
vim.api.nvim_set_keymap('i', '<A-i>', '<Esc>', { noremap = true, silent = true })
|
||||
-- Настройка терминала
|
||||
vim.api.nvim_set_keymap('t', '<A-i>', '<C-\\><C-n>', { noremap = true, silent = true })
|
||||
|
||||
|
||||
-- Время ожидания ввода комбинаций с <Leader>
|
||||
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! <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
|
||||
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------[[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', '<Leader><Tab>', 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
|
||||
|
||||
-- Привязка функции к <Leader>n
|
||||
vim.keymap.set('n', '<Leader>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
|
||||
51
lua/config/fzf.lua
Normal file
51
lua/config/fzf.lua
Normal file
@ -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 <button class="citation-flag" data-index="8">
|
||||
}
|
||||
},
|
||||
previewers = {
|
||||
builtin = {
|
||||
extensions = {
|
||||
-- Настройка для изображений
|
||||
["png"] = "chafa",
|
||||
["jpg"] = "chafa",
|
||||
["jpeg"] = "chafa",
|
||||
["gif"] = "chafa",
|
||||
["bmp"] = "chafa",
|
||||
["webp"] = "chafa",
|
||||
["tiff"] = "chafa",
|
||||
-- Добавьте другие форматы по необходимости
|
||||
},
|
||||
},
|
||||
},
|
||||
oldfiles = {
|
||||
cwd_only = true, -- Только файлы из текущей директории
|
||||
stat_file = true, -- Проверка существования файлов на диске
|
||||
include_current_session = true, -- Включать только файлы из текущей сессии
|
||||
},
|
||||
files = {
|
||||
-- other configurations...
|
||||
hidden = true, -- Disable showing hidden files
|
||||
no_ignore = false, -- Игнорировать .gitignore
|
||||
fd_opts = [[--color=never --hidden --type f --type l --exclude .git]],
|
||||
ignore_files = { ".gitignore", ".ignore" }, -- Добавьте эту строку
|
||||
toggle_ignore_flag = "--no-ignore",
|
||||
actions = {
|
||||
["ctrl-i"] = actions.toggle_ignore, -- Новое сокращение для переключения игнорирования
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
||||
vim.api.nvim_set_keymap('n', '<leader>f', ':FzfLua files<CR>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>g', ':FzfLua live_grep<CR>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>z', ':FzfLua zoxide<CR>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>o', ':FzfLua oldfiles<CR>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>r', ':FzfLua buffers<CR>', { noremap = true, silent = true })
|
||||
18
lua/config/indent-blankline.lua
Normal file
18
lua/config/indent-blankline.lua
Normal file
@ -0,0 +1,18 @@
|
||||
local ibl = require("ibl")
|
||||
|
||||
ibl.setup({
|
||||
enabled = true,
|
||||
indent = {
|
||||
char = "│", -- Символ для отображения отступов
|
||||
tab_char = "│", -- Символ для табуляций
|
||||
},
|
||||
scope = {
|
||||
enabled = false, -- Отключено по умолчанию
|
||||
},
|
||||
exclude = {
|
||||
filetypes = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy" }, -- Исключить определенные типы файлов
|
||||
},
|
||||
whitespace = {
|
||||
remove_blankline_trail = false, -- Не удалять пробелы в конце строк
|
||||
},
|
||||
})
|
||||
47
lua/config/lazy.lua
Normal file
47
lua/config/lazy.lua
Normal file
@ -0,0 +1,47 @@
|
||||
-- Bootstrap lazy.nvim
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- Настройки до загрузки lazy
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = "\\"
|
||||
|
||||
-- Загружаем lazy
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
{ import = "plugins" },
|
||||
},
|
||||
install = { colorscheme = { "habamax" } },
|
||||
checker = { enabled = true },
|
||||
experimental = {
|
||||
check_rtp = false,
|
||||
check_rtp_message = false,
|
||||
},
|
||||
})
|
||||
|
||||
local function augroup(name)
|
||||
return vim.api.nvim_create_augroup("lazyvim_" .. name, { clear = true })
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
group = augroup("autoupdate"),
|
||||
callback = function()
|
||||
if require("lazy.status").has_updates then
|
||||
require("lazy").update({ show = false })
|
||||
end
|
||||
end,
|
||||
})
|
||||
7
lua/config/lualine.lua
Normal file
7
lua/config/lualine.lua
Normal file
@ -0,0 +1,7 @@
|
||||
require('lualine').setup {
|
||||
options = {
|
||||
theme = 'gruvbox',
|
||||
section_separators = '',
|
||||
component_separators = '',
|
||||
},
|
||||
}
|
||||
185
lua/config/markview.lua
Normal file
185
lua/config/markview.lua
Normal file
@ -0,0 +1,185 @@
|
||||
require('markview').setup({
|
||||
markdown = {
|
||||
debounce = 300, -- Задержка обновления
|
||||
|
||||
headings = {
|
||||
enable = true,
|
||||
org_shift_char = " ",
|
||||
shift_width = 0,
|
||||
org_indent = false,
|
||||
org_indent_wrap = false,
|
||||
|
||||
heading_1 = {
|
||||
style = "label",
|
||||
sign = "",
|
||||
},
|
||||
heading_2 = {
|
||||
style = "label",
|
||||
sign = "",
|
||||
},
|
||||
heading_3 = {
|
||||
style = "label",
|
||||
},
|
||||
heading_4 = {
|
||||
style = "label",
|
||||
},
|
||||
heading_5 = {
|
||||
style = "label",
|
||||
},
|
||||
heading_6 = {
|
||||
style = "label",
|
||||
},
|
||||
setext_1 = {
|
||||
style = "decorated",
|
||||
sign = "", sign_hl = "MarkviewHeading1Sign",
|
||||
icon = " ", hl = "MarkviewHeading1",
|
||||
border = "▂"
|
||||
},
|
||||
setext_2 = {
|
||||
style = "decorated",
|
||||
sign = "", sign_hl = "MarkviewHeading2Sign",
|
||||
icon = " ", hl = "MarkviewHeading2",
|
||||
border = "▁"
|
||||
}
|
||||
};
|
||||
|
||||
horizontal_rules = {
|
||||
enable = true, -- Оставляем предпросмотр горизонтальных линий включенным
|
||||
|
||||
parts = {
|
||||
{
|
||||
type = "repeating",
|
||||
repeat_amount = function (buffer)
|
||||
local utils = require("markview.utils");
|
||||
local window = utils.buf_getwin(buffer)
|
||||
|
||||
local width = vim.api.nvim_win_get_width(window)
|
||||
local textoff = vim.fn.getwininfo(window)[1].textoff;
|
||||
|
||||
return math.floor((width - textoff - 3) / 2);
|
||||
end,
|
||||
|
||||
text = "─", -- Символ для повторения
|
||||
hl = "MarkviewBlockQuoteDefault" -- Упрощенная подсветка без градиента
|
||||
},
|
||||
{
|
||||
-- type = "text",
|
||||
---- text = " $ ", -- Центральный символ изменен на "$"
|
||||
hl = "MarkviewBlockQuoteDefault" -- Упрощенная подсветка без градиента
|
||||
},
|
||||
{
|
||||
type = "repeating",
|
||||
repeat_amount = function (buffer)
|
||||
local utils = require("markview.utils");
|
||||
local window = utils.buf_getwin(buffer)
|
||||
|
||||
local width = vim.api.nvim_win_get_width(window)
|
||||
local textoff = vim.fn.getwininfo(window)[1].textoff;
|
||||
|
||||
return math.ceil((width - textoff - 3) / 2);
|
||||
end,
|
||||
|
||||
direction = "right",
|
||||
text = "─", -- Символ для повторения
|
||||
hl = "MarkviewBlockQuoteDefault" -- Упрощенная подсветка без градиента
|
||||
}
|
||||
}
|
||||
};
|
||||
list_items = {
|
||||
enable = true,
|
||||
wrap = false,
|
||||
|
||||
indent_size = 2,
|
||||
shift_width = 4,
|
||||
|
||||
marker_minus = {
|
||||
add_padding = false,
|
||||
conceal_on_checkboxes = true,
|
||||
|
||||
text = "",
|
||||
hl = "MarkviewListItemMinus"
|
||||
},
|
||||
|
||||
marker_plus = {
|
||||
add_padding = false,
|
||||
conceal_on_checkboxes = true,
|
||||
|
||||
text = "",
|
||||
hl = "MarkviewListItemPlus"
|
||||
},
|
||||
|
||||
marker_star = {
|
||||
add_padding = false,
|
||||
conceal_on_checkboxes = true,
|
||||
|
||||
text = "",
|
||||
hl = "MarkviewListItemStar"
|
||||
},
|
||||
|
||||
marker_dot = {
|
||||
add_padding = false,
|
||||
conceal_on_checkboxes = true,
|
||||
},
|
||||
|
||||
marker_parenthesis = {
|
||||
add_padding = false,
|
||||
conceal_on_checkboxes = true,
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
preview = {
|
||||
enable = true,
|
||||
enable_hybrid_mode = true,
|
||||
modes = { "n", "i", "v", "c" }, -- Работает во всех основных режимах
|
||||
hybrid_modes = { "n", "v", "c" }, -- Hybrid mode во всех режимах
|
||||
linewise_hybrid_mode = true, -- Линейный режим hybrid
|
||||
edit_range = { 0, 0 }, -- Диапазон для input mode (-1, 1)
|
||||
draw_range = { vim.o.lines, vim.o.lines }, -- Рендерить весь остальной текст
|
||||
filetypes = { "markdown", "rmd", "quarto", "typst" }, -- Поддерживаемые форматы
|
||||
ignore_buftypes = { "nofile" },
|
||||
callbacks = {
|
||||
on_attach = function(_, wins)
|
||||
for _, win in ipairs(wins) do
|
||||
vim.wo[win].conceallevel = 3
|
||||
end
|
||||
end,
|
||||
on_detach = function(_, wins)
|
||||
for _, win in ipairs(wins) do
|
||||
vim.wo[win].conceallevel = 0
|
||||
end
|
||||
end,
|
||||
on_enable = function(_, wins)
|
||||
for _, win in ipairs(wins) do
|
||||
vim.wo[win].conceallevel = 3
|
||||
end
|
||||
end,
|
||||
on_disable = function(_, wins)
|
||||
for _, win in ipairs(wins) do
|
||||
vim.wo[win].conceallevel = 0
|
||||
end
|
||||
end,
|
||||
on_hybrid_enable = function(_, wins)
|
||||
for _, win in ipairs(wins) do
|
||||
vim.wo[win].conceallevel = 3
|
||||
end
|
||||
end,
|
||||
on_hybrid_disable = function(_, wins)
|
||||
for _, win in ipairs(wins) do
|
||||
vim.wo[win].conceallevel = 0
|
||||
end
|
||||
end,
|
||||
on_mode_change = function(_, wins, current_mode)
|
||||
local preview_modes = { "n", "i", "v", "c" }
|
||||
for _, win in ipairs(wins) do
|
||||
if vim.tbl_contains(preview_modes, current_mode) then
|
||||
vim.wo[win].conceallevel = 3
|
||||
else
|
||||
vim.wo[win].conceallevel = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
1
lua/config/mason.lua
Normal file
1
lua/config/mason.lua
Normal file
@ -0,0 +1 @@
|
||||
require('mason').setup()
|
||||
27
lua/config/mkdx.lua
Normal file
27
lua/config/mkdx.lua
Normal file
@ -0,0 +1,27 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- Italic
|
||||
vim.keymap.set('n', '<leader>/', '<Nop>', { noremap = true, silent = true })
|
||||
vim.keymap.set('v', '<leader>/', '<Nop>', { noremap = true, silent = true })
|
||||
|
||||
vim.keymap.set('n', '<leader>i', '<Plug>(mkdx-text-italic-n)', { noremap = true, silent = true })
|
||||
vim.keymap.set('v', '<leader>i', '<Plug>(mkdx-text-italic-v)', { noremap = true, silent = true })
|
||||
|
||||
-- Toggle Checkbox
|
||||
vim.keymap.set('n', '<Plug>(mkdx-toggle-checkbox-n)', '<Plug>', { noremap = true, silent = true }) -- leader t
|
||||
vim.keymap.set('v', '<leader>t', '<Nop>', { noremap = true, silent = true })
|
||||
vim.keymap.set('v', '<leader>lt', '<Nop>', { noremap = true, silent = true })
|
||||
--vim.keymap.set('v', '<leader>c', '<Nop>', { noremap = true, silent = true })
|
||||
|
||||
--vim.keymap.set('v', '<leader>c', '<Plug>(mkdx-toggle-checkbox-n)', { noremap = true, silent = true })
|
||||
vim.keymap.set('v', '<leader>lc', '<Plug>(mkdx-toggle-checkbox-n)', { noremap = true, silent = true })
|
||||
|
||||
-- Generate/Update TOC
|
||||
vim.keymap.set('n', '<Plug>(mkdx-gen-or-upd-toc)', '<Plug>', { noremap = true, silent = true }) -- leader i
|
||||
|
||||
vim.keymap.set('n', '<leader>h', '<Plug>(mkdx-gen-or-upd-toc)', { noremap = true, silent = true })
|
||||
|
||||
|
||||
68
lua/config/mutton.lua
Normal file
68
lua/config/mutton.lua
Normal file
@ -0,0 +1,68 @@
|
||||
vim.g.mutton_min_center_width = 110
|
||||
-- Для Mutton
|
||||
local normal_bg = vim.fn.synIDattr(vim.fn.hlID("Normal"), "bg")
|
||||
vim.api.nvim_set_hl(0, "EndOfBuffer", { fg = normal_bg} ) -- overrides `~` character at the end of buffer
|
||||
vim.api.nvim_set_hl(0, "VertSplit", { fg = normal_bg} ) -- overrides `~` character at the end of buffer
|
||||
vim.api.nvim_set_hl(0, "WinSeparator", { fg = normal_bg })
|
||||
|
||||
|
||||
local mutton = false
|
||||
local function on_buf_read()
|
||||
vim.defer_fn(function()
|
||||
local buf_name = vim.api.nvim_buf_get_name(0) -- Получаем имя файла
|
||||
|
||||
|
||||
if buf_name:match("%.md$") and mutton == false and not buf_name:match("ui.md$") then -- Проверяем, заканчивается ли имя на ".md"
|
||||
mutton = true
|
||||
vim.cmd("MuttonToggle")
|
||||
elseif mutton == true and buf_name:match("ui.md$") then
|
||||
mutton = false
|
||||
vim.cmd("wincmd l | q")
|
||||
vim.cmd("wincmd h | q")
|
||||
vim.cmd("MuttonToggle")
|
||||
|
||||
elseif buf_name:match("NvimTree_1$") then
|
||||
|
||||
elseif buf_name:match("%[%[Mutton%]%]$") then
|
||||
|
||||
elseif buf_name:match("/usr/bin/sh$") then
|
||||
|
||||
elseif mutton == true and not buf_name:match("%.md$") then
|
||||
mutton = false
|
||||
vim.cmd("MuttonToggle")
|
||||
end
|
||||
end, 100)
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("BufEnter", { callback = on_buf_read })
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- Создаем автокоманду для события QuitPre
|
||||
vim.api.nvim_create_autocmd("QuitPre", {
|
||||
callback = function()
|
||||
local buf_name = vim.api.nvim_buf_get_name(0) -- Получаем имя файла
|
||||
if buf_name:match("%.md$") then -- Проверяем, заканчивается ли имя на ".md"
|
||||
vim.cmd("q")
|
||||
vim.cmd("q")
|
||||
vim.cmd("q")
|
||||
|
||||
end
|
||||
end,
|
||||
})
|
||||
44
lua/config/nvim-cmp.lua
Normal file
44
lua/config/nvim-cmp.lua
Normal file
@ -0,0 +1,44 @@
|
||||
local cmp = require'cmp'
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require('luasnip').lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = {
|
||||
['<A-l>'] = cmp.mapping.select_prev_item(),
|
||||
['<A-k>'] = cmp.mapping.select_next_item(),
|
||||
['<C-;>'] = cmp.mapping.confirm({ select = true }),
|
||||
['<Tab>'] = cmp.mapping.confirm({ select = true }),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-j>'] = cmp.mapping.close(),
|
||||
['<C-e>'] = cmp.mapping.close(),
|
||||
},
|
||||
sources = {
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'buffer' },
|
||||
{ name = 'nvim_lsp_signature_help' },
|
||||
{ name = 'render-markdown' },
|
||||
{ name = 'path' },
|
||||
},
|
||||
})
|
||||
|
||||
-- Diagnostic
|
||||
vim.keymap.set('n', '<Space>k', '<cmd>lua vim.diagnostic.open_float()<CR>', { noremap = true, silent = true })
|
||||
vim.keymap.set('n', '<space>l', [[:lua YankDiagnosticError()<CR>]], { noremap = true, silent = true, desc = "Copy error" })
|
||||
|
||||
function YankDiagnosticError()
|
||||
vim.diagnostic.open_float()
|
||||
vim.diagnostic.open_float()
|
||||
local win_id = vim.fn.win_getid() -- get the window ID of the floating window
|
||||
vim.cmd("normal! j") -- move down one row
|
||||
vim.cmd("normal! VG") -- select everything from that row down
|
||||
vim.cmd("normal! \"+y") -- yank selected text
|
||||
vim.api.nvim_win_close(win_id, true) -- close the floating window by its ID
|
||||
end
|
||||
|
||||
|
||||
vim.diagnostic.config({
|
||||
signs = false, -- Отключает отображение знаков (иконок ошибок) слева
|
||||
})
|
||||
52
lua/config/nvim-lspconfig.lua
Normal file
52
lua/config/nvim-lspconfig.lua
Normal file
@ -0,0 +1,52 @@
|
||||
-- lua/config/nvim-lspconfig.lua
|
||||
|
||||
local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
||||
|
||||
-- Java
|
||||
vim.lsp.config('jdtls', {
|
||||
cmd = { "jdtls" },
|
||||
settings = {
|
||||
java = {
|
||||
signatureHelp = {
|
||||
enabled = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- C/C++
|
||||
vim.lsp.config('clangd', {})
|
||||
|
||||
-- Rust
|
||||
vim.lsp.config('rust_analyzer', {
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
["rust-analyzer"] = {
|
||||
cargo = {
|
||||
allFeatures = true,
|
||||
},
|
||||
procMacro = {
|
||||
enable = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Python
|
||||
vim.lsp.config('pyright', {
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
python = {
|
||||
analysis = {
|
||||
autoSearchPaths = true,
|
||||
diagnosticMode = "workspace",
|
||||
useLibraryCodeForTypes = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
vim.lsp.enable('jdtls')
|
||||
vim.lsp.enable('clangd')
|
||||
vim.lsp.enable('rust_analyzer')
|
||||
vim.lsp.enable('pyright')
|
||||
68
lua/config/nvim-tree.lua
Normal file
68
lua/config/nvim-tree.lua
Normal file
@ -0,0 +1,68 @@
|
||||
-- Настройка nvim-tree
|
||||
require("nvim-tree").setup({
|
||||
sort = {
|
||||
sorter = "case_sensitive",
|
||||
},
|
||||
view = {
|
||||
width = 40,
|
||||
},
|
||||
renderer = {
|
||||
group_empty = true,
|
||||
},
|
||||
filters = {
|
||||
dotfiles = true,
|
||||
},
|
||||
actions = {
|
||||
open_file = {
|
||||
quit_on_open = true, -- закрывать дерево при открытии файла
|
||||
},
|
||||
},
|
||||
on_attach = function(bufnr)
|
||||
local api = require("nvim-tree.api")
|
||||
|
||||
-- Apply default mappings
|
||||
api.config.mappings.default_on_attach(bufnr)
|
||||
|
||||
-- Remove default C-] mapping
|
||||
vim.keymap.del("n", "<C-]>", { buffer = bufnr })
|
||||
|
||||
-- Define file extensions to handle with system open
|
||||
local special_extensions = {
|
||||
".pdf", ".png", ".jpeg", ".jpg", ".doc", ".docx", ".epub", ".fb2"
|
||||
}
|
||||
|
||||
-- Helper function to check file extension
|
||||
local function has_special_extension(node)
|
||||
for _, ext in ipairs(special_extensions) do
|
||||
if node.name:match("%.?[^.]+$") == ext then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- Create combined CR mapping
|
||||
vim.keymap.set("n", "<CR>", function()
|
||||
local node = api.tree.get_node_under_cursor()
|
||||
if node and has_special_extension(node) then
|
||||
api.node.run.system() -- Open file in system
|
||||
else
|
||||
api.node.open.edit() -- Default open file behavior
|
||||
api.tree.change_root_to_node() -- Change root to node
|
||||
end
|
||||
end, { buffer = bufnr })
|
||||
end,
|
||||
})
|
||||
|
||||
-- Глобальные бинды для nvim-tree
|
||||
vim.keymap.set("n", "<Leader>e", ":NvimTreeToggle<CR>", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<Leader>q", ":NvimTreeFindFile<CR>", { noremap = true, silent = true })
|
||||
|
||||
|
||||
vim.api.nvim_create_autocmd("DirChanged", {
|
||||
callback = function()
|
||||
local new_dir = vim.fn.getcwd() -- Получаем текущую рабочую директорию
|
||||
require("nvim-tree.api").tree.change_root(new_dir)
|
||||
-- Здесь можно добавить любые действия, например, логирование или обновление плагинов
|
||||
end,
|
||||
})
|
||||
31
lua/config/nvim-treesitter.lua
Normal file
31
lua/config/nvim-treesitter.lua
Normal file
@ -0,0 +1,31 @@
|
||||
-- lua/config/nvim-treesitter.lua
|
||||
require('nvim-treesitter').setup({
|
||||
highlight = {
|
||||
enable = true,
|
||||
disable = function(lang, buf)
|
||||
-- Проверяем, существует ли буфер и связан ли он с файлом
|
||||
if not buf or buf == 0 then
|
||||
return true
|
||||
end
|
||||
|
||||
-- Получаем информацию о файле
|
||||
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
|
||||
if not ok or not stats or not stats.size then
|
||||
return true
|
||||
end
|
||||
|
||||
-- Отключаем подсветку для больших файлов
|
||||
local max_filesize = 500 * 1024 -- 500 KB
|
||||
if stats.size > max_filesize then
|
||||
return true
|
||||
end
|
||||
|
||||
-- Включаем подсветку для всех остальных случаев
|
||||
return false
|
||||
end,
|
||||
},
|
||||
-- Дополнительно можно включить другие функции:
|
||||
-- indent = { enable = true },
|
||||
-- incremental_selection = { enable = true },
|
||||
-- textobjects = { ... },
|
||||
})
|
||||
73
lua/config/render-markdown.lua
Normal file
73
lua/config/render-markdown.lua
Normal file
@ -0,0 +1,73 @@
|
||||
require('render-markdown').setup({
|
||||
debounce = 100,
|
||||
-- render_modes = true,
|
||||
heading = {
|
||||
enabled = true,
|
||||
icons = { "", },
|
||||
position = 'inline',
|
||||
border = { true, true, true, false, false, false},
|
||||
border_virtual = true,
|
||||
width = 'block',
|
||||
right_pad = 1,
|
||||
left_pad = 1,
|
||||
},
|
||||
sign = { enabled = false },
|
||||
quote = { repeat_linebreak = true },
|
||||
link = {
|
||||
enabled = true,
|
||||
render_modes = false,
|
||||
footnote = {
|
||||
superscript = false,
|
||||
prefix = '',
|
||||
suffix = '',
|
||||
},
|
||||
image = ' ',
|
||||
email = ' ',
|
||||
hyperlink = '',
|
||||
highlight = 'RenderMarkdownLink',
|
||||
wiki = {
|
||||
icon = ' ',
|
||||
body = function()
|
||||
return nil
|
||||
end,
|
||||
highlight = 'RenderMarkdownWikiLink',
|
||||
},
|
||||
custom = {
|
||||
web = { pattern = '^http', icon = ' ' },
|
||||
discord = { pattern = 'discord%.com', icon = ' ' },
|
||||
github = { pattern = 'github%.com', icon = ' ' },
|
||||
gitlab = { pattern = 'gitlab%.com', icon = ' ' },
|
||||
google = { pattern = 'google%.com', icon = ' ' },
|
||||
neovim = { pattern = 'neovim%.io', icon = ' ' },
|
||||
reddit = { pattern = 'reddit%.com', icon = ' ' },
|
||||
stackoverflow = { pattern = 'stackoverflow%.com', icon = ' ' },
|
||||
wikipedia = { pattern = 'wikipedia%.org', icon = ' ' },
|
||||
youtube = { pattern = 'youtube%.com', icon = ' ' },
|
||||
},
|
||||
},
|
||||
checkbox = {
|
||||
unchecked = { icon = '✘ ' },
|
||||
checked = { icon = '✔ ' },
|
||||
},
|
||||
bullet = { icons = { '•', '◦', '-',} },
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
-- переход по ссылкам
|
||||
vim.keymap.set('n', 'gl', function() FindHttpOrWwwInLine() end, { silent = true })
|
||||
|
||||
function FindHttpOrWwwInLine()
|
||||
local line = vim.api.nvim_get_current_line()
|
||||
local start_pos, end_pos = line:find("http")
|
||||
if start_pos then
|
||||
local col = start_pos - 1
|
||||
vim.api.nvim_win_set_cursor(0, {vim.fn.line('.'), col})
|
||||
vim.cmd("normal! vE")
|
||||
vim.fn.feedkeys("gx")
|
||||
vim.api.nvim_input("<Esc>")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
168
lua/plugins.lua
Normal file
168
lua/plugins.lua
Normal file
@ -0,0 +1,168 @@
|
||||
return {
|
||||
-- ==============================
|
||||
-- Визуальные плагины
|
||||
-- ==============================
|
||||
|
||||
-- Темы оформления
|
||||
{
|
||||
"bluz71/vim-nightfly-colors", -- Nightfly тема
|
||||
},
|
||||
{
|
||||
"folke/tokyonight.nvim", -- TokyoNight тема
|
||||
},
|
||||
{
|
||||
"morhetz/gruvbox", -- Gruvbox тема
|
||||
},
|
||||
{
|
||||
"rebelot/kanagawa.nvim", -- Kanagawa тема
|
||||
},
|
||||
{
|
||||
"navarasu/onedark.nvim",
|
||||
config = function()
|
||||
require("onedark").setup({
|
||||
style = "dark", -- Выберите стиль: 'dark', 'darker', 'cool', 'deep', 'warm', 'warmer'
|
||||
})
|
||||
require("onedark").load() -- Активируйте тему
|
||||
end,
|
||||
},
|
||||
|
||||
-- Иконки
|
||||
{
|
||||
"nvim-tree/nvim-web-devicons", -- Провайдер иконок для других плагинов
|
||||
},
|
||||
|
||||
-- Интерфейс и UI
|
||||
-- {
|
||||
-- "MeanderingProgrammer/render-markdown.nvim", -- Рендеринг Markdown
|
||||
-- dependencies = { "echasnovski/mini.nvim", opt = true },
|
||||
-- config = function()
|
||||
-- require("config.render-markdown")
|
||||
-- end,
|
||||
-- },
|
||||
{
|
||||
"nvim-lualine/lualine.nvim", -- Статусная строка
|
||||
dependencies = { "kyazdani42/nvim-web-devicons", optional = true },
|
||||
},
|
||||
{
|
||||
"lukas-reineke/indent-blankline.nvim", -- Визуализация отступов
|
||||
config = function()
|
||||
require("config.indent-blankline")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"iamcco/markdown-preview.nvim",
|
||||
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
|
||||
build = "cd app && yarn install",
|
||||
init = function()
|
||||
vim.g.mkdp_filetypes = { "markdown" }
|
||||
vim.g.mkdp_markdown_css = vim.fn.expand("~/.config/nvim/markdown.css")
|
||||
end,
|
||||
ft = { "markdown" },
|
||||
},
|
||||
-- ==============================
|
||||
-- Функциональные плагины
|
||||
-- ==============================
|
||||
|
||||
-- LSP и автодополнение
|
||||
{
|
||||
"hrsh7th/cmp-nvim-lsp", -- Интеграция nvim-cmp с LSP
|
||||
},
|
||||
{
|
||||
"hrsh7th/cmp-nvim-lsp-signature-help", -- Поддержка сигнатур LSP в автодополнении
|
||||
},
|
||||
{
|
||||
"hrsh7th/cmp-path", -- Автодополнение путей
|
||||
},
|
||||
{
|
||||
"hrsh7th/nvim-cmp", -- Основной плагин автодополнения
|
||||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig", -- Конфигурация LSP
|
||||
},
|
||||
{
|
||||
"williamboman/mason.nvim", -- Управление LSP серверами
|
||||
},
|
||||
|
||||
-- Поиск и навигация
|
||||
{
|
||||
"ibhagwan/fzf-lua", -- FZF для быстрого поиска
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
opts = {},
|
||||
config = function()
|
||||
require("config.fzf")
|
||||
end,
|
||||
},
|
||||
{
|
||||
"nvim-lua/plenary.nvim", -- Библиотека для других плагинов
|
||||
},
|
||||
|
||||
-- Другие функциональные плагины
|
||||
{
|
||||
"antoinemadec/FixCursorHold.nvim", -- Исправление CursorHold событий
|
||||
},
|
||||
{
|
||||
"gabenespoli/vim-mutton", -- Дополнительные возможности для работы с текстом
|
||||
},
|
||||
{
|
||||
"kyazdani42/nvim-tree.lua", -- Файловый менеджер
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
},
|
||||
{
|
||||
"nanotee/zoxide.vim", -- Интеграция с zoxide для быстрой навигации
|
||||
},
|
||||
{
|
||||
"SidOfc/mkdx", -- Улучшения для работы с Markdown
|
||||
},
|
||||
{
|
||||
"OXY2DEV/markview.nvim",
|
||||
lazy = false,
|
||||
config = function()
|
||||
require("config.markview")
|
||||
end,
|
||||
dependencies = { "nvim-treesitter/nvim-treesitter" },
|
||||
},
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
config = function()
|
||||
require("config.nvim-treesitter")
|
||||
end,
|
||||
},
|
||||
{
|
||||
'gsuuon/model.nvim',
|
||||
config = function()
|
||||
local bash_provider = {
|
||||
request_completion = function(handlers, params, options)
|
||||
local input = params.input
|
||||
local command = "~/test '" .. input .. "'"
|
||||
local handle = io.popen(command)
|
||||
local result = handle:read("*a")
|
||||
handle:close()
|
||||
|
||||
local response = vim.json.decode(result)
|
||||
handlers.on_partial(response.message.content)
|
||||
handlers.on_finish()
|
||||
end
|
||||
}
|
||||
|
||||
require('model').setup({
|
||||
chats = {
|
||||
mybash = {
|
||||
provider = bash_provider,
|
||||
create = function(input, context)
|
||||
return {
|
||||
messages = {
|
||||
{ role = 'user', content = input }
|
||||
}
|
||||
}
|
||||
end,
|
||||
run = function(messages, config)
|
||||
local last_message = messages[#messages]
|
||||
return { input = last_message.content }
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
end
|
||||
}
|
||||
}
|
||||
105
markdown.css
Normal file
105
markdown.css
Normal file
@ -0,0 +1,105 @@
|
||||
/* Увеличение размера шрифта для блочных формул */
|
||||
.katex-display {
|
||||
font-size: 1.5em; /* Увеличение размера шрифта */
|
||||
margin-top: 1em; /* Верхний отступ */
|
||||
margin-bottom: 1em; /* Нижний отступ */
|
||||
}
|
||||
|
||||
/* Увеличение размера шрифта для инлайн-формул */
|
||||
.katex {
|
||||
font-size: 1em; /* Увеличение размера шрифта */
|
||||
}
|
||||
|
||||
/* Установка глобального размера шрифта */
|
||||
.markdown-body {
|
||||
font-size: 35px;
|
||||
margin-bottom: 900px; /* Добавление отступа внизу страницы */
|
||||
}
|
||||
|
||||
/* Уменьшение отступов для списков */
|
||||
ul, ol {
|
||||
padding-left: 40px; /* Уменьшение отступа слева для списков */
|
||||
margin-top: 0.5em; /* Уменьшение верхнего отступа */
|
||||
margin-bottom: 0.5em; /* Уменьшение нижнего отступа */
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 0.2em; /* Уменьшение отступа между элементами списка */
|
||||
}
|
||||
|
||||
/* Уменьшение отступов для параграфов */
|
||||
p {
|
||||
font-size: 1.45em; /* Увеличиваем размер шрифта (например, до 1.2em) */
|
||||
margin-top: 0.5em; /* Уменьшение верхнего отступа */
|
||||
margin-bottom: 0.5em; /* Уменьшение нижнего отступа */
|
||||
}
|
||||
|
||||
/* Уменьшение отступов для заголовков */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1em; /* Уменьшение верхнего отступа */
|
||||
margin-bottom: 0.5em; /* Уменьшение нижнего отступа */
|
||||
}
|
||||
|
||||
/* Уменьшение отступов для цитат */
|
||||
blockquote {
|
||||
margin-left: 10px; /* Уменьшение отступа слева */
|
||||
margin-right: 10px; /* Уменьшение отступа справа */
|
||||
margin-top: 0.5em; /* Уменьшение верхнего отступа */
|
||||
margin-bottom: 0.5em; /* Уменьшение нижнего отступа */
|
||||
padding-left: 5px; /* Уменьшение внутреннего отступа слева */
|
||||
}
|
||||
|
||||
/* Уменьшение отступов для блоков кода */
|
||||
pre {
|
||||
margin-top: 0.5em; /* Уменьшение верхнего отступа */
|
||||
margin-bottom: 0.5em; /* Уменьшение нижнего отступа */
|
||||
padding: 5px; /* Уменьшение внутренних отступов */
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 2px 4px; /* Уменьшение внутренних отступов для встроенного кода */
|
||||
}
|
||||
u
|
||||
|
||||
/* Уменьшение отступов для списков */
|
||||
ul, ol {
|
||||
padding-left: 40px; /* Уменьшение отступа слева для списков */
|
||||
margin-top: 0.5em; /* Уменьшение верхнего отступа */
|
||||
margin-bottom: 0.5em; /* Уменьшение нижнего отступа */
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 0.2em; /* Уменьшение отступа между элементами списка */
|
||||
}
|
||||
|
||||
/* Уменьшение отступов для параграфов */
|
||||
p {
|
||||
margin-top: 0.5em; /* Уменьшение верхнего отступа */
|
||||
margin-bottom: 0.5em; /* Уменьшение нижнего отступа */
|
||||
}
|
||||
|
||||
/* Уменьшение отступов для заголовков */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1em; /* Уменьшение верхнего отступа */
|
||||
margin-bottom: 0.5em; /* Уменьшение нижнего отступа */
|
||||
}
|
||||
|
||||
/* Уменьшение отступов для цитат */
|
||||
blockquote {
|
||||
margin-left: 10px; /* Уменьшение отступа слева */
|
||||
margin-right: 10px; /* Уменьшение отступа справа */
|
||||
margin-top: 0.5em; /* Уменьшение верхнего отступа */
|
||||
margin-bottom: 0.5em; /* Уменьшение нижнего отступа */
|
||||
padding-left: 5px; /* Уменьшение внутреннего отступа слева */
|
||||
}
|
||||
|
||||
/* Уменьшение отступов для блоков кода */
|
||||
pre {
|
||||
margin-top: 0.5em; /* Уменьшение верхнего отступа */
|
||||
margin-bottom: 0.5em; /* Уменьшение нижнего отступа */
|
||||
padding: 5px; /* Уменьшение внутренних отступов */
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 2px 4px; /* Уменьшение внутренних отступов для встроенного кода */
|
||||
}
|
||||
Reference in New Issue
Block a user