--[[ nvim-neo-tree/neo-tree ]] -- Открыть интерфейс vim.keymap.set('n', 'ff', 'NeoTreeShow', {noremap = true}) vim.keymap.set('n', 'fd', 'NeoTreeReveal', {noremap = true}) --[[ onsails/diaglist.nvim ]] -- Открыть интерфейс диагностики vim.keymap.set('n', 'dw', 'lua require(\'diaglist\').open_all_diagnostics()', {noremap = true}) vim.keymap.set('n', 'd0', 'lua require(\'diaglist\').open_buffer_diagnostics()', {noremap = true}) --[[ noib3/nvim-cokeline ]] -- Переключение вкладок vim.keymap.set('n', '', '(cokeline-focus-next)', {noremap = true, silent = true}) vim.keymap.set('n', '', '(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 end vim.keymap.set('i', '', 'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "" : coc#refresh()', {silent = true, noremap = true, expr = true, replace_keycodes = false}) vim.keymap.set('i', '', [[coc#pum#visible() ? coc#pum#prev(1) : "\"]], {silent = true, noremap = true, expr = true, replace_keycodes = false}) -- Применить выбранное автозавершение vim.keymap.set('i', '', [[coc#pum#visible() ? coc#pum#confirm() : "\u\\=coc#on_enter()\"]], {silent = true, noremap = true, expr = true, replace_keycodes = false}) -- Отобразить меню фрагментов vim.keymap.set('i', '', '(coc-snippets-expand-jump)', {silent = true, noremap = true, expr = true, replace_keycodes = false}) -- Отобразить меню автозавершений vim.keymap.set('i', '', 'coc#refresh()', {silent = true, expr = true}) -- Навигация в диагностической панели vim.keymap.set('n', '[g', '(coc-diagnostic-prev)', {silent = true}) vim.keymap.set('n', ']g', '(coc-diagnostic-next)', {silent = true}) -- GoTo-навигация vim.keymap.set('n', 'gd', '(coc-definition)', {silent = true}) vim.keymap.set('n', 'gy', '(coc-type-definition)', {silent = true}) vim.keymap.set('n', 'gi', '(coc-implementation)', {silent = true}) vim.keymap.set('n', 'gr', '(coc-references)', {silent = true}) -- Отобразить документацию в окне представления function _G.show_docs() local cw = vim.fn.expand('') 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) end end vim.keymap.set('n', 'k', 'lua _G.show_docs()', {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', 'rn', '(coc-rename)', {silent = true}) -- Форматировать выбранный код vim.keymap.set('x', 'f', '(coc-format-selected)', {silent = true}) vim.keymap.set('n', 'f', '(coc-format-selected)', {silent = true}) -- Установить formatexpr для указанных типов файлов vim.api.nvim_create_autocmd('FileType', { group = 'CocGroup', pattern = 'typescript,json', command = 'setl formatexpr=CocAction(\'formatSelected\')', desc = 'Установить formatexpr для указанных типов файлов' }) -- Обновить вспомогательную запись на всплывающем заполнителе vim.api.nvim_create_autocmd('User', { group = 'CocGroup', pattern = 'CocJumpPlaceholder', command = 'call CocActionAsync(\'showSignatureHelp\')', desc = 'Обновить вспомогательную запись на всплывающем заполнителе' }) -- Применить codeAction к выбранному региону vim.keymap.set('x', 'a', '(coc-codeaction-selected)', {silent = true, nowait = true}) vim.keymap.set('n', 'a', '(coc-codeaction-selected)', {silent = true, nowait = true}) -- Применить действия с кодом в позиции курсора vim.keymap.set('n', 'ac', '(coc-codeaction-cursor)', {silent = true, nowait = true}) -- Применить действия с кодом на всём буфере vim.keymap.set('n', 'as', '(coc-codeaction-source)', {silent = true, nowait = true}) -- Применить codeActions в текущем буфере vim.keymap.set('n', 'ac', '(coc-codeaction)', {silent = true, nowait = true}) -- Применить наиболее предпочтительное быстрое исправление в текущей строке vim.keymap.set('n', 'qf', '(coc-fix-current)', {silent = true, nowait = true}) -- Применить рефакторинг vim.keymap.set('n', 're', '(coc-codeaction-refactor)', {silent = true}) vim.keymap.set('x', 'r', 'Plug>(coc-codeaction-refactor-selected)', {silent = true}) vim.keymap.set('n', 'r', 'Plug>(coc-codeaction-refactor-selected)', {silent = true}) -- Выполнить действия Code Lens в текущей строке vim.keymap.set('n', 'cl', '(coc-codelens-action)', {silent = true, nowait = true}) -- Назначение функция и классов текстовых объектов vim.keymap.set('x', 'if', '(coc-funcobj-i)', {silent = true, nowait = true}) vim.keymap.set('o', 'if', '(coc-funcobj-i)', {silent = true, nowait = true}) vim.keymap.set('x', 'af', '(coc-funcobj-a)', {silent = true, nowait = true}) vim.keymap.set('o', 'af', '(coc-funcobj-a)', {silent = true, nowait = true}) vim.keymap.set('x', 'ic', '(coc-classobj-i)', {silent = true, nowait = true}) vim.keymap.set('o', 'ic', '(coc-classobj-i)', {silent = true, nowait = true}) vim.keymap.set('x', 'ac', '(coc-classobj-a)', {silent = true, nowait = true}) vim.keymap.set('o', 'ac', '(coc-classobj-a)', {silent = true, nowait = true}) -- Прокрутка во всплывающих окнах vim.keymap.set('n', '', 'coc#float#has_scroll() ? coc#float#scroll(1) : \'\'', {silent = true, nowait = true, expr = true}) vim.keymap.set('n', '', 'coc#float#has_scroll() ? coc#float#scroll(0) : \'\'', {silent = true, nowait = true, expr = true}) vim.keymap.set('i', '', 'coc#float#has_scroll() ? \'=coc#float#scroll(1)\' : \'\'', {silent = true, nowait = true, expr = true}) vim.keymap.set('i', '', 'coc#float#has_scroll() ? \'=coc#float#scroll(0)\' : \'\'', {silent = true, nowait = true, expr = true}) vim.keymap.set('v', '', 'coc#float#has_scroll() ? coc#float#scroll(1) : \'\'', {silent = true, nowait = true, expr = true}) vim.keymap.set('v', '', 'coc#float#has_scroll() ? coc#float#scroll(0) : \'\'', {silent = true, nowait = true, expr = true}) -- Выбрать диапазон vim.keymap.set('n', '', '(coc-range-select)', {silent = true}) vim.keymap.set('x', '', '(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\', )', {nargs = '?'}) -- Команда ":OR" для организации импорта текущего буфера vim.api.nvim_create_user_command('OR', 'call CocActionAsync(\'runCommand\', \'editor.action.organizeImport\')', {}) -- Показать всю диагностику vim.keymap.set('n', 'a', ':CocList diagnostics', {silent = true, nowait = true}) -- Управление расширениями vim.keymap.set('n', 'e', ':CocList extensions', {silent = true, nowait = true}) -- Показать команды vim.keymap.set('n', 'c', ':CocList commands', {silent = true, nowait = true}) -- Поиск символа текущего документа vim.keymap.set('n', 'o', ':CocList outline', {silent = true, nowait = true}) -- Поиск символа рабочей области vim.keymap.set('n', 's', ':CocList -I symbols', {silent = true, nowait = true}) -- Выполнить действие по умолчанию для следующего элемента vim.keymap.set('n', 'j', ':CocNext', {silent = true, nowait = true}) -- Выполнить действие по умолчанию для предыдущего элемента vim.keymap.set('n', 'k', ':CocPrev', {silent = true, nowait = true}) -- Восстановить последний список vim.keymap.set('n', 'p', ':CocListResume', {silent = true, nowait = true})