NCM2 - Мощное автодополнение для Neovim без тормозов

07 Jun, 2025

Репозиторий давно не обновлялся

Последнее обновление было 1 год назад.

1,333
🔱 42
👥 26

Вы когда-нибудь завидовали плавному автодополнению в современных IDE, но не хотели отказываться от Vim? Знакомо чувство, когда редактор зависает на пару секунд, пока подгружаются подсказки? NCM2 решает эти проблемы, предлагая быструю и асинхронную систему автодополнения специально для Neovim.

Что такое NCM2 и зачем он нужен

NCM2 — это минималистичный фреймворк для автодополнения кода, который работает асинхронно и не блокирует ваш редактор. В отличие от встроенных решений Vim, он:

  • Не заставляет вас ждать завершения анализа кода
  • Поддерживает множество языков программирования
  • Позволяет легко расширять функциональность через плагины

Демонстрация работы NCM2

Ключевые возможности

1. Асинхронность без тормозов

Главный козырь NCM2 — выполнение анализа кода в фоновом режиме. Пока вы печатаете, система продолжает работать, не блокируя интерфейс.

2. Умное контекстное автодополнение

NCM2 понимает, в каком контексте вы работаете:

Реклама
  • CSS-подсказки внутри HTML-тега style
  • JavaScript-подсказки внутри тега script
  • И многое другое

3. Поддержка сниппетов

Просто установите ncm2-snippet и получайте:

  • Быструю вставку шаблонов кода
  • Поддержку параметризованных сниппетов
  • Возможность создавать свои шаблоны

4. Интеграция с Language Server Protocol

Через дополнительные плагины NCM2 может работать с LSP, предоставляя:

  • Автодополнение на основе семантического анализа
  • Подсказки по типам
  • Навигацию по коду

Как установить

Для менеджера плагинов lazy.nvim:

return {
  { "roxma/nvim-yarp" },
  {
    "ncm2/ncm2",
    config = function()
      vim.opt.completeopt = { "noinsert", "menuone", "noselect" }
      vim.api.nvim_create_autocmd({'BufEnter'}, {
        callback = function() vim.call('ncm2#enable_for_buffer') end
      })
    end,
  },
  { 'ncm2/ncm2-bufword' },
  { 'ncm2/ncm2-path' },
}

Или для vim-plug:

Plug 'ncm2/ncm2'
Plug 'roxma/nvim-yarp'

" Основные настройки
autocmd BufEnter * call ncm2#enable_for_buffer()
set completeopt=noinsert,menuone,noselect

" Источники автодополнения
Plug 'ncm2/ncm2-bufword'
Plug 'ncm2/ncm2-path'

Полезные настройки

Добавьте в ваш vimrc эти хоткеи для большего комфорта:

" Убираем лишние сообщения
set shortmess+=c

" Правильная работа Enter в меню автодополнения
inoremap <expr> <CR> (pumvisible() ? "\<c-y>\<cr>" : "\<CR>")

" Навигация по подсказкам Tab/Shift-Tab
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"

Кому подойдет NCM2

Этот фреймворк особенно понравится:

  • Разработчикам, которые ценят скорость работы
  • Тем, кто работает с несколькими языками программирования
  • Энтузиастам, любящим кастомизировать свою среду разработки

NCM2 — это свежий взгляд на автодополнение в Neovim. Он сочетает в себе скорость, гибкость и богатые возможности. Если вы еще не пробовали — самое время установить и ощутить разницу. А если уже используете — возможно, узнали что-то новое из этой статьи.

Главное преимущество? Он просто работает и не мешает вам кодить. А разве не этого мы все хотим от инструментов?

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.