moshno nadristal

This commit is contained in:
2023-02-11 22:56:38 +10:00
parent b4157580f5
commit 47e833bef3
20 changed files with 324 additions and 226 deletions

View File

@@ -1,8 +1,12 @@
--[[ nvim-neo-tree/neo-tree ]]
-- Открыть интерфейс
vim.keymap.set('n', '<space>ff', '<cmd>NeoTreeShow<cr>', {noremap = true})
vim.keymap.set('n', '<space>fd', '<cmd>NeoTreeReveal<cr>', {noremap = true})
-- Открыть интерфейс с древовидным отображением файлов
vim.keymap.set({'n', 'i', 'v', 'o', 'x'}, '<f1>', '<cmd>NeoTreeRevealToggle<cr>', {noremap = true})
-- [[ folke/trouble.nvim ]]
vim.keymap.set({'n', 'i', 'v', 'o', 'x'}, '<f2>', '<cmd>TroubleToggle<cr>', {noremap = true})
--[[ onsails/diaglist.nvim ]]
@@ -10,160 +14,142 @@ vim.keymap.set('n', '<space>fd', '<cmd>NeoTreeReveal<cr>', {noremap = true})
vim.keymap.set('n', '<space>dw', '<cmd>lua require(\'diaglist\').open_all_diagnostics()<cr>', {noremap = true})
vim.keymap.set('n', '<space>d0', '<cmd>lua require(\'diaglist\').open_buffer_diagnostics()<cr>', {noremap = true})
--[[ noib3/nvim-cokeline ]]
-- Переключение вкладок
vim.keymap.set('n', '<tab>', '<Plug>(cokeline-focus-next)', {noremap = true, silent = true})
vim.keymap.set('n', '<s-tab>', '<Plug>(cokeline-focus-prev)', {noremap = true, silent = true})
--[[ neoclide/coc ]]
-- Автозавершение
function _G.check_back_space()
local col = vim.fn.col('.') - 1
return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nil
--[[ neovim/nvim-lspconfig ]]
-- Диагностика
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, {noremap = true, silent = true})
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, {noremap = true, silent = true})
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, {noremap = true, silent = true})
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, {noremap = true, silent = true})
-- Инициализация только после того, как LSP-сервер подключится к текущему буферу
lspconfig_on_attach = function(client, bufnr)
-- Активация завершения
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, {noremap = true, silent = true, buffer = bufnr})
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {noremap = true, silent = true, buffer = bufnr})
vim.keymap.set('n', 'K', vim.lsp.buf.hover, {noremap = true, silent = true, buffer = bufnr})
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, {noremap = true, silent = true, buffer = bufnr})
vim.keymap.set('n', '<c-k>', vim.lsp.buf.signature_help, {noremap = true, silent = true, buffer = bufnr})
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, {noremap = true, silent = true, buffer = bufnr})
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, {noremap = true, silent = true, buffer = bufnr})
vim.keymap.set('n', '<space>wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, {noremap = true, silent = true, buffer = bufnr})
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, {noremap = true, silent = true, buffer = bufnr})
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, {noremap = true, silent = true, buffer = bufnr})
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, {noremap = true, silent = true, buffer = bufnr})
vim.keymap.set('n', 'gr', vim.lsp.buf.references, {noremap = true, silent = true, buffer = bufnr})
-- Форматирование
vim.keymap.set('n', '<space>f', function() vim.lsp.buf.format { async = true } end, {noremap = true, silent = true, buffer = bufnr})
end
vim.keymap.set('i', '<tab>', 'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "<TAB>" : coc#refresh()', {silent = true, noremap = true, expr = true, replace_keycodes = false})
vim.keymap.set('i', '<s-tab>', [[coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"]], {silent = true, noremap = true, expr = true, replace_keycodes = false})
-- Применить выбранное автозавершение
vim.keymap.set('i', '<cr>', [[coc#pum#visible() ? coc#pum#confirm() : "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"]], {silent = true, noremap = true, expr = true, replace_keycodes = false})
-- Отобразить меню фрагментов
vim.keymap.set('i', '<c-j>', '<Plug>(coc-snippets-expand-jump)', {silent = true, noremap = true, expr = true, replace_keycodes = false})
--[[ lewis6991/gitsigns.nvim ]]
-- Отобразить меню автозавершений
vim.keymap.set('i', '<c-space>', 'coc#refresh()', {silent = true, expr = true})
-- Инициализация только после того, как LSP-сервер подключится к текущему буферу
gitsigns_on_attach = function(bufnr)
-- Инициализация ярлыка
local gs = package.loaded.gitsigns
-- Навигация в диагностической панели
vim.keymap.set('n', '[g', '<Plug>(coc-diagnostic-prev)', {silent = true})
vim.keymap.set('n', ']g', '<Plug>(coc-diagnostic-next)', {silent = true})
-- Навигация
vim.keymap.set('n', ']c', function()
if vim.wo.diff then return ']c' end
vim.schedule(function() gs.next_hunk() end)
return '<Ignore>'
end, {expr = true, buffer = bufnr})
-- GoTo-навигация
vim.keymap.set('n', 'gd', '<Plug>(coc-definition)', {silent = true})
vim.keymap.set('n', 'gy', '<Plug>(coc-type-definition)', {silent = true})
vim.keymap.set('n', 'gi', '<Plug>(coc-implementation)', {silent = true})
vim.keymap.set('n', 'gr', '<Plug>(coc-references)', {silent = true})
-- Навигация
vim.keymap.set('n', '[c', function()
if vim.wo.diff then return '[c' end
vim.schedule(function() gs.prev_hunk() end)
return '<Ignore>'
end, {expr = true, buffer = bufnr})
-- Отобразить документацию в окне представления
function _G.show_docs()
local cw = vim.fn.expand('<cword>')
if vim.fn.index({'vim', 'help'}, vim.bo.filetype) >= 0 then
vim.api.nvim_command('h ' .. cw)
elseif vim.api.nvim_eval('coc#rpc#ready()') then
vim.fn.CocActionAsync('doHover')
else
vim.api.nvim_command('!' .. vim.o.keywordprg .. ' ' .. cw)
vim.keymap.set('n', '<leader>hs', '<cmd>Gitsigns stage_hunk<cr>', {buffer = bufnr})
vim.keymap.set('v', '<leader>hs', '<cmd>Gitsigns stage_hunk<cr>', {buffer = bufnr})
vim.keymap.set('n', '<leader>hr', '<cmd>Gitsigns reset_hunk<cr>', {buffer = bufnr})
vim.keymap.set('v', '<leader>hr', '<cmd>Gitsigns reset_hunk<cr>', {buffer = bufnr})
vim.keymap.set('n', '<leader>hS', gs.stage_buffer, {buffer = bufnr})
vim.keymap.set('n', '<leader>hu', gs.undo_stage_hunk, {buffer = bufnr})
vim.keymap.set('n', '<leader>hR', gs.reset_buffer, {buffer = bufnr})
vim.keymap.set('n', '<leader>hp', gs.preview_hunk, {buffer = bufnr})
vim.keymap.set('n', '<leader>hb', function() gs.blame_line{full=true} end, {buffer = bufnr})
vim.keymap.set('n', '<leader>tb', gs.toggle_current_line_blame, {buffer = bufnr})
vim.keymap.set('n', '<leader>hd', gs.diffthis, {buffer = bufnr})
vim.keymap.set('n', '<leader>hD', function() gs.diffthis('~') end, {buffer = bufnr})
vim.keymap.set('n', '<leader>td', gs.toggle_deleted, {buffer = bufnr})
vim.keymap.set('o', 'ih', '<cmd><c-U>Gitsigns select_hunk<cr>', {buffer = bufnr})
vim.keymap.set('x', 'ih', '<cmd><c-U>Gitsigns select_hunk<cr>', {buffer = bufnr})
end
--[[ nvim-telescope/telescope.nvim ]]
-- Инициализация ярлыка
local builtin = require('telescope.builtin')
-- Поиск файла
vim.keymap.set('n', '<leader>ff', builtin.find_files, {noremap = true, silent = true})
-- grep
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {noremap = true, silent = true})
-- Буферы?
vim.keymap.set('n', '<leader>fb', builtin.buffers, {noremap = true, silent = true})
-- Помощь
vim.keymap.set('n', '<leader>fh', builtin.help_tags, {noremap = true, silent = true})
--[[ windwp/nvim-autopairs ]]
-- Переназначение стандартных сочетаний клавиш для "ms-jpq/coq_nvim"
--vim.keymap.set('i', '<esc>', [[pumvisible() ? "<c-e><esc>" : "<esc>"]], {expr = true, noremap = true})
--vim.keymap.set('i', '<c-c>', [[pumvisible() ? "<c-e><c-c>" : "<c-c>"]], {expr = true, noremap = true})
--vim.keymap.set('i', '<tab>', [[pumvisible() ? "<c-n>" : "<tab>"]], {expr = true, noremap = true})
--vim.keymap.set('i', '<s-tab>', [[pumvisible() ? "<c-p>" : "<tab>"]], {expr = true, noremap = true})
_G.PairIT = function()
local autopairs = {
['('] = ')',
['['] = ']',
['{'] = '}',
['<'] = '>',
[ [=[']=] ] = [=[']=],
[ [=["]=] ] = [=["]=],
}
local set_pairs = vim.keymap.set
for k, v in pairs(autopairs) do
set_pairs('i', k, function()
return k .. v .. '<Left>'
end, { expr = true, noremap = true })
end
end
vim.keymap.set('n', 'k', '<CMD>lua _G.show_docs()<CR>', {silent = true})
-- Подсветка символа и ссылаемые на него объекты при событии "CursorHold" (курсор неподвижен)
vim.api.nvim_create_augroup('CocGroup', {})
vim.api.nvim_create_autocmd('CursorHold', {
group = 'CocGroup',
command = 'silent call CocActionAsync(\'highlight\')',
desc = 'Подсветка символа и ссылаемые на него объекты при событии "CursorHold"'
})
-- Переименовать символ
vim.keymap.set('n', '<leader>rn', '<Plug>(coc-rename)', {silent = true})
--[[ b3nj5m1n/kommentary ]]
vim.keymap.set('n', '<leader>cic', '<Plug>kommentary_line_increase', {noremap = true, silent = true})
vim.keymap.set('n', '<leader>ci', '<Plug>kommentary_motion_increase', {noremap = true, silent = true})
vim.keymap.set('x', '<leader>ci', '<Plug>kommentary_visual_increase', {noremap = true, silent = true})
vim.keymap.set('n', '<leader>cdc', '<Plug>kommentary_line_decrease', {noremap = true, silent = true})
vim.keymap.set('n', '<leader>cd', '<Plug>kommentary_motion_decrease', {noremap = true, silent = true})
vim.keymap.set('x', '<leader>cd', '<Plug>kommentary_visual_decrease', {noremap = true, silent = true})
-- Форматировать выбранный код
vim.keymap.set('x', '<leader>f', '<Plug>(coc-format-selected)', {silent = true})
vim.keymap.set('n', '<leader>f', '<Plug>(coc-format-selected)', {silent = true})
-- Установить formatexpr для указанных типов файлов
vim.api.nvim_create_autocmd('FileType', {
group = 'CocGroup',
pattern = 'typescript,json',
command = 'setl formatexpr=CocAction(\'formatSelected\')',
desc = 'Установить formatexpr для указанных типов файлов'
})
--[[ preservim/tagbar ]]
vim.keymap.set({'n', 'i', 'v', 'o', 'x'}, '<f8>', '<cmd>TagbarToggle<cr>', {noremap = true, silent = true})
-- Обновить вспомогательную запись на всплывающем заполнителе
vim.api.nvim_create_autocmd('User', {
group = 'CocGroup',
pattern = 'CocJumpPlaceholder',
command = 'call CocActionAsync(\'showSignatureHelp\')',
desc = 'Обновить вспомогательную запись на всплывающем заполнителе'
})
-- Применить codeAction к выбранному региону
vim.keymap.set('x', '<leader>a', '<Plug>(coc-codeaction-selected)', {silent = true, nowait = true})
vim.keymap.set('n', '<leader>a', '<Plug>(coc-codeaction-selected)', {silent = true, nowait = true})
--[[ simrat39/symbols-outline.nvim ]]
vim.keymap.set({'n', 'i', 'v', 'o', 'x'}, '<f7>', '<cmd>SymbolsOutline<cr>', {noremap = true, silent = true})
-- Применить действия с кодом в позиции курсора
vim.keymap.set('n', '<leader>ac', '<Plug>(coc-codeaction-cursor)', {silent = true, nowait = true})
-- Применить действия с кодом на всём буфере
vim.keymap.set('n', '<leader>as', '<Plug>(coc-codeaction-source)', {silent = true, nowait = true})
-- Применить codeActions в текущем буфере
vim.keymap.set('n', '<leader>ac', '<Plug>(coc-codeaction)', {silent = true, nowait = true})
-- Применить наиболее предпочтительное быстрое исправление в текущей строке
vim.keymap.set('n', '<leader>qf', '<Plug>(coc-fix-current)', {silent = true, nowait = true})
-- Применить рефакторинг
vim.keymap.set('n', '<leader>re', '<Plug>(coc-codeaction-refactor)', {silent = true})
vim.keymap.set('x', '<leader>r', 'Plug>(coc-codeaction-refactor-selected)', {silent = true})
vim.keymap.set('n', '<leader>r', 'Plug>(coc-codeaction-refactor-selected)', {silent = true})
-- Выполнить действия Code Lens в текущей строке
vim.keymap.set('n', '<leader>cl', '<Plug>(coc-codelens-action)', {silent = true, nowait = true})
-- Назначение функция и классов текстовых объектов
vim.keymap.set('x', 'if', '<Plug>(coc-funcobj-i)', {silent = true, nowait = true})
vim.keymap.set('o', 'if', '<Plug>(coc-funcobj-i)', {silent = true, nowait = true})
vim.keymap.set('x', 'af', '<Plug>(coc-funcobj-a)', {silent = true, nowait = true})
vim.keymap.set('o', 'af', '<Plug>(coc-funcobj-a)', {silent = true, nowait = true})
vim.keymap.set('x', 'ic', '<Plug>(coc-classobj-i)', {silent = true, nowait = true})
vim.keymap.set('o', 'ic', '<Plug>(coc-classobj-i)', {silent = true, nowait = true})
vim.keymap.set('x', 'ac', '<Plug>(coc-classobj-a)', {silent = true, nowait = true})
vim.keymap.set('o', 'ac', '<Plug>(coc-classobj-a)', {silent = true, nowait = true})
-- Прокрутка во всплывающих окнах
vim.keymap.set('n', '<C-f>', 'coc#float#has_scroll() ? coc#float#scroll(1) : \'<C-f>\'', {silent = true, nowait = true, expr = true})
vim.keymap.set('n', '<C-b>', 'coc#float#has_scroll() ? coc#float#scroll(0) : \'<C-b>\'', {silent = true, nowait = true, expr = true})
vim.keymap.set('i', '<C-f>', 'coc#float#has_scroll() ? \'<c-r>=coc#float#scroll(1)<cr>\' : \'<Right>\'', {silent = true, nowait = true, expr = true})
vim.keymap.set('i', '<C-b>', 'coc#float#has_scroll() ? \'<c-r>=coc#float#scroll(0)<cr>\' : \'<Left>\'', {silent = true, nowait = true, expr = true})
vim.keymap.set('v', '<C-f>', 'coc#float#has_scroll() ? coc#float#scroll(1) : \'<C-f>\'', {silent = true, nowait = true, expr = true})
vim.keymap.set('v', '<C-b>', 'coc#float#has_scroll() ? coc#float#scroll(0) : \'<C-b>\'', {silent = true, nowait = true, expr = true})
-- Выбрать диапазон
vim.keymap.set('n', '<C-s>', '<Plug>(coc-range-select)', {silent = true})
vim.keymap.set('x', '<C-s>', '<Plug>(coc-range-select)', {silent = true})
-- Команда ":Format" для форматирования текущего буфера
vim.api.nvim_create_user_command('Format', 'call CocAction(\'format\')', {})
-- Команда ":Fold" для сворачивания текущего буфера
vim.api.nvim_create_user_command('Fold', 'call CocAction(\'fold\', <f-args>)', {nargs = '?'})
-- Команда ":OR" для организации импорта текущего буфера
vim.api.nvim_create_user_command('OR', 'call CocActionAsync(\'runCommand\', \'editor.action.organizeImport\')', {})
-- Показать всю диагностику
vim.keymap.set('n', '<space>a', ':<C-u>CocList diagnostics<cr>', {silent = true, nowait = true})
-- Управление расширениями
vim.keymap.set('n', '<space>e', ':<C-u>CocList extensions<cr>', {silent = true, nowait = true})
-- Показать команды
vim.keymap.set('n', '<space>c', ':<C-u>CocList commands<cr>', {silent = true, nowait = true})
-- Поиск символа текущего документа
vim.keymap.set('n', '<space>o', ':<C-u>CocList outline<cr>', {silent = true, nowait = true})
-- Поиск символа рабочей области
vim.keymap.set('n', '<space>s', ':<C-u>CocList -I symbols<cr>', {silent = true, nowait = true})
-- Выполнить действие по умолчанию для следующего элемента
vim.keymap.set('n', '<space>j', ':<C-u>CocNext<cr>', {silent = true, nowait = true})
-- Выполнить действие по умолчанию для предыдущего элемента
vim.keymap.set('n', '<space>k', ':<C-u>CocPrev<cr>', {silent = true, nowait = true})
-- Восстановить последний список
vim.keymap.set('n', '<space>p', ':<C-u>CocListResume<cr>', {silent = true, nowait = true})

View File

@@ -1,6 +1,12 @@
-- Выход из режима "ВСТАВКА" (insert)
vim.api.nvim_set_keymap('i', '<C-i>', '<escape>', {noremap = true})
vim.keymap.set('i', '<C-i>', '<escape>', {noremap = true})
-- Быстрый сдвиг текста в режиме 'ВСТАВКА' (insert)
vim.api.nvim_set_keymap('i', '<tab>', '<cmd>><cr>', {noremap = true})
vim.api.nvim_set_keymap('i', '<s-tab>', '<cmd><<cr>', {noremap = true})
vim.keymap.set('i', '<tab>', '<cmd>><cr>', {noremap = true})
vim.keymap.set('i', '<s-tab>', '<cmd><<cr>', {noremap = true})
-- Отключение стрелок
vim.keymap.set('n', '<left>', '', {noremap = true})
vim.keymap.set('n', '<up>', '', {noremap = true})
vim.keymap.set('n', '<right>', '', {noremap = true})
vim.keymap.set('n', '<down>', '', {noremap = true})