Compare commits
17 Commits
2ac7303469
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| eaad2e675c | |||
| 2e7e64def1 | |||
| c180adf85b | |||
| 6dd726ea14 | |||
| 115e0b93c5 | |||
| 73175fd40c | |||
| dde7d87052 | |||
| 340430a5cd | |||
| c42c23d5a8 | |||
| e7d4e1c5c0 | |||
| 6f9fcff8fa | |||
| 3ffda93c33 | |||
| ad70695803 | |||
| 7007025a20 | |||
| d4debecc55 | |||
| c8015ebb31 | |||
| 3dd801888d |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
lazy-lock.json
|
||||
99
README.md
99
README.md
@ -1,50 +1,70 @@
|
||||
# 🔥ObsiVim
|
||||
|
||||
# SexNvim
|
||||
|
||||
Nvim как менеджер заметок! Что еще нужно для счастья ?
|
||||
|
||||
- Рендеринг markdown
|
||||
- Дети
|
||||
- Меню быстрого перехода
|
||||
- Глобальный поиск по содержимому файлов
|
||||
- Размытый поиск файлов
|
||||
- Поиск по содержимому файлов
|
||||
- .ignore - игнорирование вложенных файлов в поиске
|
||||
|
||||
# ⚠️ Требования
|
||||
- fzf - Пакет для fuzzy поиска (необходим)
|
||||
# Требования
|
||||
|
||||
- [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)
|
||||
|
||||
|
||||
# ✨Установленные плагины
|
||||
# Установленные плагины
|
||||
|
||||
### Функционал
|
||||
## Менеджер заметок
|
||||
|
||||
#### Функционал
|
||||
|
||||
##### Obsivim
|
||||
- [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 функций
|
||||
- [bufferline.nvim](https://github.com/akinsho/bufferline.nvim) - Менеджер буферов
|
||||
- [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
|
||||
- [gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim) - Интеграция с Git
|
||||
- [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 для быстрого перехода между директориями
|
||||
|
||||
#### Визуал
|
||||
|
||||
### Визуал
|
||||
- [nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons) - Иконки (рекомендуется)
|
||||
- [render-markdown.nvim](https://github.com/MeanderingProgrammer/render-markdown.nvim) - Визуализация Markdown (рекомендуется)
|
||||
- [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
|
||||
.
|
||||
@ -56,11 +76,12 @@ Nvim как менеджер заметок! Что еще нужно для с
|
||||
│ │ ├── cmp-nvim-lsp.lua
|
||||
│ │ ├── common-settings.lua
|
||||
│ │ ├── fzf.lua
|
||||
│ │ ├── gitsigns.lua
|
||||
│ │ ├── indent-blankline.lua
|
||||
│ │ ├── lazy.lua
|
||||
│ │ ├── lualine.lua
|
||||
│ │ ├── mason.lua
|
||||
│ │ ├── mkdx.lua
|
||||
│ │ ├── noice.lua
|
||||
│ │ ├── nvim-cmp.lua
|
||||
│ │ ├── nvim-lspconfig.lua
|
||||
│ │ ├── nvim-tree.lua
|
||||
@ -71,8 +92,14 @@ Nvim как менеджер заметок! Что еще нужно для с
|
||||
│ │ └── which-key.lua
|
||||
│ └── plugins.lua
|
||||
└── README.md
|
||||
|
||||
3 directories, 22 files
|
||||
|
||||
```
|
||||
# ⬇️ Установка
|
||||
|
||||
|
||||
|
||||
# Установка
|
||||
|
||||
### linux
|
||||
```bash
|
||||
@ -80,17 +107,23 @@ mv ~/.config/nvim ~/.config/bkp_nvim
|
||||
git clone ssh://git@root-kit.ru:17458/sam/Obsivim.git nvim
|
||||
nvim .
|
||||
```
|
||||
*также не забудьте установить пакеты fzf и chafa*
|
||||
*также не забудьте установить пакеты fzf и chafa(если нужно)*
|
||||
|
||||
|
||||
|
||||
# ⌨️ Сочетания клавиш
|
||||
# Сочетания клавиш
|
||||
|
||||
Leader - пробел
|
||||
|
||||
### Поиск (fzf.lua)
|
||||
- Leader + o - поиск файлов по имени
|
||||
- Leader + f - поиск файлов по содержимому
|
||||
|
||||
- Leader + f - поиск файлов в текущей директории (files)
|
||||
- Leader + o - поиск недавних файлов (old files)
|
||||
- Leader + g - поиск файлов по содержимому (grep)
|
||||
- Leader + z - переход между директориями (zoxide)
|
||||
- Leader + r - переход между буферами
|
||||
|
||||
|
||||
|
||||
### Markdown-форматирование(mkdx)
|
||||
|
||||
@ -104,17 +137,17 @@ Leader - пробел
|
||||
- Leader + ` - обернуть инлайн кодом
|
||||
- Leader + k - переключить горячие клавиши
|
||||
- Leader + ll - переключить элемент списка
|
||||
- Leader + lt - переключить элемент чеклиста
|
||||
- Leader + lc - переключить элемент чеклиста
|
||||
- Leader + / - сгенерировать/обновить TOC
|
||||
- Leader + s - перечеркнутый текст
|
||||
- Leader + ln - обернуть ссылкой
|
||||
- Leader + t - переключить элемент чекбокса
|
||||
- Leader + , - преобразовать CSV в таблицу (в режиме визуального выделения)
|
||||
- Leader + j - перейти к заголовку
|
||||
- Leader + I - быстрый TOC
|
||||
- Leader + L - быстрая проверка мертвых фрагментов ссылок
|
||||
- Leader + gf - перейти к файлу
|
||||
- Leader + gx - открыть внешний файл
|
||||
- Leader + gl - открыть ссылку
|
||||
- Tab - отступ нумерованного элемента списка
|
||||
- Shift + Tab - уменьшение отступа нумерованного элемента списка
|
||||
- ]] - переход к следующему заголовку
|
||||
@ -127,9 +160,29 @@ Leader - пробел
|
||||
- ctrl+n - обработчик автодополнения ctrl+n
|
||||
- ctrl+p - обработчик автодополнения ctrl+p
|
||||
|
||||
### Остальное
|
||||
|
||||
- Leader + tab - скрыть строку состояния
|
||||
- Leader + n - скрыть нумерацию строк
|
||||
|
||||
***Так же для своего хранилища заметок можно настроить файл .ignore***
|
||||
Например для всех файлов кроме формата .md:
|
||||
|
||||
```git {.ignore}
|
||||
# Игнорировать все файлы
|
||||
*
|
||||
|
||||
# Кроме .md
|
||||
!*.md
|
||||
|
||||
# Разрешить все папки
|
||||
!*/
|
||||
```
|
||||
|
||||
|
||||
|
||||
###### Помогите
|
||||
|
||||
>Бедным детям в Уганде нужна ваша помощь!
|
||||
>
|
||||
>Наберите :help iccf<Enter> для дополнительной информации
|
||||
|
||||
16
init.lua
16
init.lua
@ -1,20 +1,24 @@
|
||||
require("config.lazy")
|
||||
|
||||
require("config.common-settings")
|
||||
|
||||
|
||||
require("config.mason")
|
||||
require("config.nvim-tree")
|
||||
--require("config.render-markdown")
|
||||
require("config.markview")
|
||||
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.which-key")
|
||||
|
||||
|
||||
require("config.indent-blankline")
|
||||
require("config.fzf")
|
||||
require("config.noice")
|
||||
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 })
|
||||
|
||||
@ -1,30 +0,0 @@
|
||||
{
|
||||
"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": "ae9378a48fcf07475d93b3dc7775c2aab0b9fa7b" },
|
||||
"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": "3a354c754656538ad76d1add93ca21e75b7f3181" },
|
||||
"mkdx": { "branch": "master", "commit": "ee667cad506954b706c3fa972fbaaad46b1bf028" },
|
||||
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
|
||||
"nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "c27370703e798666486e3064b64d59eaf4bdc6d5" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "a3f8422b752e03334dbaf4a46940d8aee0acdebf" },
|
||||
"nvim-notify": { "branch": "master", "commit": "22f29093eae7785773ee9d543f8750348b1a195c" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "c09ff35de503a41fa62465c6b4ae72d96e7a7ce4" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "f37b1668a63b0d1c3ec165f6ba202367604df1a2" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "1020869742ecb191f260818234517f4a1515cfe8" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "595ac4f7e7c0eaba7bf1d8fd6ec0f6ac91c7e33b" },
|
||||
"suda.vim": { "branch": "master", "commit": "9adda7d195222d4e2854efb2a88005a120296c47" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" },
|
||||
"vim-nightfly-colors": { "branch": "master", "commit": "e4fd65b08c5ae590511d77c2ad26c59c353fc64a" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" },
|
||||
"zoxide.vim": { "branch": "master", "commit": "b1e70b6fc1682a83929aee63680d2b43456fe9a5" }
|
||||
}
|
||||
@ -1,4 +1,9 @@
|
||||
require("bufferline").setup{}
|
||||
require("bufferline").setup{
|
||||
options = {
|
||||
tab_size = 30
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-- Настройка биндов узнать что действительно нажимается - перейти в режим вставки нажать <c-v> и потом необходимое сочетание
|
||||
vim.keymap.set('n', '<A-;>', ':BufferLineCycleNext<CR>', { noremap = true, silent = true })
|
||||
@ -11,20 +16,3 @@ vim.keymap.set('t', '<A-w>', '<C-\\><C-N>:bd!<CR>', { noremap = true, silent = t
|
||||
-- Добавление выхода из режима вставки в терминале
|
||||
vim.keymap.set('t', '<A-i>', '<C-\\><C-N>', { noremap = true, silent = true })
|
||||
|
||||
local function toggle_bufferline()
|
||||
local bufferline = require("bufferline")
|
||||
local api = vim.api
|
||||
|
||||
-- Получаем текущие опции Bufferline
|
||||
local options = bufferline.get_options()
|
||||
|
||||
-- Переключаем значение always_show_bufferline
|
||||
options.always_show_bufferline = not options.always_show_bufferline
|
||||
|
||||
-- Обновляем конфигурацию Bufferline
|
||||
bufferline.setup({ options = options })
|
||||
|
||||
-- Очищаем кэш и перерисовываем интерфейс
|
||||
api.nvim_command("redraw")
|
||||
end
|
||||
|
||||
|
||||
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
|
||||
@ -1,10 +1,10 @@
|
||||
|
||||
--------------------------------------------------------------------------[[ФУНКЦИОНАЛ]]--------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------[[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 })
|
||||
@ -20,23 +20,24 @@ 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 })
|
||||
-- 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('n', '<Space>t', ':terminal<CR>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('t', '<A-i>', '<C-\\><C-n>', { noremap = true, silent = true })
|
||||
|
||||
|
||||
|
||||
|
||||
-- установить время ожидания в 200 миллисекунд
|
||||
vim.o.timeoutlen = 300
|
||||
vim.o.timeoutlen = 1000
|
||||
|
||||
|
||||
|
||||
@ -93,11 +94,13 @@ vim.opt.showmatch = true
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------[[ВИЗУАЛ]]--------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------[[VISUAL]]--------------------------------------------------------------------------
|
||||
vim.o.laststatus = 0 -- Отключает строку состояния
|
||||
|
||||
--vim.cmd("colorscheme tokyonight")
|
||||
vim.cmd("colorscheme gruvbox")
|
||||
|
||||
|
||||
--vim.cmd("colorscheme retrobox")
|
||||
--vim.cmd("colorscheme gruvbox")
|
||||
--vim.cmd("colorscheme astra") -- Применение темы
|
||||
--vim.cmd("colorscheme kanagawa") -- Основная схема
|
||||
--vim.cmd("colorscheme kanagawa-wave") -- Более светлая версия
|
||||
@ -105,7 +108,21 @@ vim.cmd("colorscheme gruvbox")
|
||||
--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, 35)
|
||||
|
||||
local laststatus_values = {0, 3}
|
||||
@ -116,9 +133,20 @@ vim.keymap.set('n', '<Leader><Tab>', function()
|
||||
end, { noremap = true, silent = true })
|
||||
|
||||
|
||||
-- Включение относительной нумерации строк
|
||||
vim.opt.number = true -- Включить абсолютную нумерацию строк
|
||||
vim.opt.relativenumber = 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()
|
||||
@ -153,9 +181,9 @@ vim.g.loaded_netrwPlugin = 1
|
||||
vim.opt.termguicolors = true
|
||||
|
||||
|
||||
|
||||
vim.opt.textwidth = 100
|
||||
|
||||
|
||||
-- перенос строк по словам
|
||||
vim.opt.linebreak = true
|
||||
|
||||
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
|
||||
@ -1,4 +1,7 @@
|
||||
|
||||
local actions = require("fzf-lua.actions")
|
||||
require("fzf-lua").setup({
|
||||
|
||||
keymap = {
|
||||
fzf = {
|
||||
["alt-k"] = "down", -- Ctrl + k теперь движется вниз
|
||||
@ -21,6 +24,22 @@ require("fzf-lua").setup({
|
||||
},
|
||||
},
|
||||
},
|
||||
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, -- Новое сокращение для переключения игнорирования
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@ -29,5 +48,5 @@ vim.api.nvim_set_keymap('n', '<leader>f', ':FzfLua files<CR>', { noremap = 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 })
|
||||
|
||||
|
||||
@ -32,6 +32,9 @@ require("lazy").setup({
|
||||
install = { colorscheme = { "habamax" } },
|
||||
-- automatically check for plugin updates
|
||||
checker = { enabled = true },
|
||||
experimental = {
|
||||
check_rtp = false,
|
||||
},
|
||||
})
|
||||
|
||||
local function augroup(name)
|
||||
|
||||
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,17 +1,27 @@
|
||||
vim.keymap.set('n', '<Plug>(mkdx-gen-or-upd-toc)', '<Plug>', { noremap = true, silent = true }) -- leader i
|
||||
vim.keymap.set('n', '<Plug>(mkdx-toggle-checkbox-n)', '<Plug>', { noremap = true, silent = true }) -- leader t
|
||||
vim.keymap.set('n', '<leader>/', '<Nop>', { noremap = true, silent = true })
|
||||
vim.keymap.set('v', '<leader>/', '<Nop>', { noremap = true, silent = true })
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- 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', '<leader>c', '<Plug>(mkdx-toggle-checkbox-n)', { noremap = true, silent = true })
|
||||
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,
|
||||
})
|
||||
@ -1,18 +0,0 @@
|
||||
require("noice").setup({
|
||||
lsp = {
|
||||
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
|
||||
override = {
|
||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||
["vim.lsp.util.stylize_markdown"] = true,
|
||||
["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
|
||||
},
|
||||
},
|
||||
-- you can enable a preset for easier configuration
|
||||
presets = {
|
||||
bottom_search = true, -- use a classic bottom cmdline for search
|
||||
command_palette = true, -- position the cmdline and popupmenu together
|
||||
long_message_to_split = true, -- long messages will be sent to a split
|
||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||
lsp_doc_border = false, -- add a border to hover docs and signature help
|
||||
},
|
||||
})
|
||||
@ -10,7 +10,7 @@ cmp.setup({
|
||||
['<A-l>'] = cmp.mapping.select_prev_item(),
|
||||
['<A-k>'] = cmp.mapping.select_next_item(),
|
||||
['<C-;>'] = cmp.mapping.confirm({ select = true }),
|
||||
['<CR>'] = 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(),
|
||||
@ -20,8 +20,8 @@ cmp.setup({
|
||||
{ name = 'buffer' },
|
||||
{ name = 'nvim_lsp_signature_help' },
|
||||
{ name = 'render-markdown' },
|
||||
{ name = 'path' },
|
||||
},
|
||||
-- другие настройки
|
||||
})
|
||||
|
||||
-- Diagnostic
|
||||
|
||||
@ -2,7 +2,8 @@ local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
||||
|
||||
local lspconfig = require('lspconfig')
|
||||
|
||||
lspconfig.jdtls.setup{
|
||||
-- Java
|
||||
lspconfig.jdtls.setup {
|
||||
cmd = { "jdtls" },
|
||||
settings = {
|
||||
java = {
|
||||
@ -13,8 +14,10 @@ lspconfig.jdtls.setup{
|
||||
},
|
||||
}
|
||||
|
||||
lspconfig.clangd.setup{}
|
||||
-- C/C++
|
||||
lspconfig.clangd.setup {}
|
||||
|
||||
-- Rust
|
||||
lspconfig.rust_analyzer.setup({
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
@ -28,3 +31,17 @@ lspconfig.rust_analyzer.setup({
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Python
|
||||
lspconfig.pyright.setup({
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
python = {
|
||||
analysis = {
|
||||
autoSearchPaths = true,
|
||||
diagnosticMode = "workspace", -- Включить диагностику для всего проекта
|
||||
useLibraryCodeForTypes = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
@ -4,7 +4,7 @@ require("nvim-tree").setup({
|
||||
sorter = "case_sensitive",
|
||||
},
|
||||
view = {
|
||||
width = 30,
|
||||
width = 40,
|
||||
},
|
||||
renderer = {
|
||||
group_empty = true,
|
||||
@ -17,6 +17,52 @@ require("nvim-tree").setup({
|
||||
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,
|
||||
})
|
||||
|
||||
@ -1,5 +1,27 @@
|
||||
require'nvim-treesitter.configs'.setup {
|
||||
ensure_installed = { "markdown", "markdown_inline","lua", "python", "javascript", "html", "css" },
|
||||
highlight = { enable = true }, -- Включение подсветки синтаксиса
|
||||
indent = { enable = true }, -- Включение автоматической настройки отступов
|
||||
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,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -1,10 +1,73 @@
|
||||
require('render-markdown').setup({
|
||||
debounce = 100,
|
||||
-- render_modes = true,
|
||||
heading = {
|
||||
width = 'block',
|
||||
left_pad = 2,
|
||||
right_pad = 4,
|
||||
border = true,
|
||||
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
|
||||
|
||||
|
||||
|
||||
@ -1,43 +0,0 @@
|
||||
require('telescope').setup({
|
||||
--дополнения
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true, -- false will only do exact matching
|
||||
override_generic_sorter = true, -- override the generic sorter
|
||||
override_file_sorter = true, -- override the file sorter
|
||||
case_mode = "ignore_case", -- or "ignore_case" or "respect_case"
|
||||
-- the default case_mode is "smart_case"
|
||||
}
|
||||
},
|
||||
--настройки
|
||||
defaults = {
|
||||
debug = true,
|
||||
mappings = {
|
||||
i = {
|
||||
-- Замена j на l для перемещения вниз
|
||||
["k"] = "move_selection_next",
|
||||
-- Замена k на h для перемещения вверх
|
||||
["l"] = "move_selection_previous",
|
||||
-- Отключение оригинальных j и k, если нужно
|
||||
["j"] = false,
|
||||
},
|
||||
n = {
|
||||
-- Аналогично для режима normal
|
||||
["k"] = "move_selection_next",
|
||||
["l"] = "move_selection_previous",
|
||||
["j"] = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
|
||||
-- To get fzf loaded and working with telescope, you need to call
|
||||
-- load_extension, somewhere after setup function:
|
||||
require('telescope').load_extension('fzf')
|
||||
|
||||
local builtin = require('telescope.builtin')
|
||||
vim.keymap.set('n', '<Leader>o', builtin.find_files, { desc = 'Telescope find files' })
|
||||
vim.keymap.set('n', '<Leader>f', builtin.live_grep, { desc = 'Telescope live grep' })
|
||||
|
||||
@ -1 +0,0 @@
|
||||
vim.g.vimtex_view_method = "zathura" -- Настройте просмотрщик PDF (например, Zathura)
|
||||
@ -1 +0,0 @@
|
||||
require("which-key").setup()
|
||||
263
lua/plugins.lua
263
lua/plugins.lua
@ -1,7 +1,138 @@
|
||||
return {
|
||||
-- Список плагинов
|
||||
-- ==============================
|
||||
-- Визуальные плагины
|
||||
-- ==============================
|
||||
|
||||
-- Treesitter для синтаксического анализа
|
||||
-- Темы оформления
|
||||
{
|
||||
"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,
|
||||
},
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
-- add any options here
|
||||
},
|
||||
dependencies = {
|
||||
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||
"MunifTanjim/nui.nvim",
|
||||
-- OPTIONAL:
|
||||
-- `nvim-notify` is only needed, if you want to use the notification view.
|
||||
-- If not available, we use `mini` as the fallback
|
||||
"rcarriga/nvim-notify",
|
||||
}
|
||||
},
|
||||
{
|
||||
"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 = {},
|
||||
},
|
||||
{
|
||||
"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",
|
||||
@ -9,107 +140,41 @@ return {
|
||||
require("config.nvim-treesitter")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Icon provider plugins
|
||||
{ "antoinemadec/FixCursorHold.nvim" },
|
||||
{ "nvim-tree/nvim-web-devicons" },
|
||||
|
||||
-- Render Markdown
|
||||
{
|
||||
"MeanderingProgrammer/render-markdown.nvim",
|
||||
dependencies = { "echasnovski/mini.nvim", opt = true },
|
||||
'gsuuon/model.nvim',
|
||||
config = function()
|
||||
require("config.render-markdown")
|
||||
end,
|
||||
},
|
||||
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()
|
||||
|
||||
|
||||
-- Показывает доступные комбинации клавиш
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
config = function()
|
||||
require("config.which-key")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Визуализация отступов
|
||||
{
|
||||
"lukas-reineke/indent-blankline.nvim",
|
||||
config = function()
|
||||
require("config.indent-blankline")
|
||||
end,
|
||||
},
|
||||
|
||||
-- Канагава theme
|
||||
{
|
||||
"rebelot/kanagawa.nvim",
|
||||
lazy = false, -- Убедитесь, что плагин загружается при запуске
|
||||
priority = 1000, -- Высокий приоритет для применения цветовой схемы
|
||||
config = function()
|
||||
vim.cmd("colorscheme kanagawa")
|
||||
local response = vim.json.decode(result)
|
||||
handlers.on_partial(response.message.content)
|
||||
handlers.on_finish()
|
||||
end
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
--nigthfly theme
|
||||
{
|
||||
"bluz71/vim-nightfly-colors",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
require('model').setup({
|
||||
chats = {
|
||||
mybash = {
|
||||
provider = bash_provider,
|
||||
create = function(input, context)
|
||||
return {
|
||||
messages = {
|
||||
{ role = 'user', content = input }
|
||||
}
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"folke/noice.nvim", -- Плагин для улучшения командной строки и сообщений
|
||||
event = "VeryLazy", -- Загружается при старте NeoVim
|
||||
dependencies = {
|
||||
-- Требуется для UI-компонентов
|
||||
"MunifTanjim/nui.nvim",
|
||||
-- Опционально: для замены стандартных уведомлений NeoVim
|
||||
"rcarriga/nvim-notify",
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"hrsh7th/nvim-cmp"
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"hrsh7th/cmp-nvim-lsp"
|
||||
},
|
||||
|
||||
{
|
||||
"ibhagwan/fzf-lua",
|
||||
-- optional for icon support
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
-- or if using mini.icons/mini.nvim
|
||||
-- dependencies = { "echasnovski/mini.icons" },
|
||||
opts = {}
|
||||
},
|
||||
|
||||
{
|
||||
'SidOfc/mkdx'
|
||||
},
|
||||
|
||||
{
|
||||
'lambdalisue/suda.vim'
|
||||
},
|
||||
|
||||
{
|
||||
'nanotee/zoxide.vim'
|
||||
},
|
||||
{"nvim-lualine/lualine.nvim", dependencies = { "kyazdani42/nvim-web-devicons", optional = true } },
|
||||
{ "morhetz/gruvbox" },
|
||||
{ "folke/tokyonight.nvim" },
|
||||
{ "neovim/nvim-lspconfig" },
|
||||
{ "kyazdani42/nvim-tree.lua", dependencies = { "nvim-tree/nvim-web-devicons" } },
|
||||
{ "akinsho/bufferline.nvim", version = "*", dependencies = "nvim-tree/nvim-web-devicons" },
|
||||
{ "williamboman/mason.nvim" },
|
||||
{ "hrsh7th/cmp-nvim-lsp-signature-help" },
|
||||
{ "nvim-lua/plenary.nvim", lazy = true },
|
||||
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