VIM logo

Устал от борьбы с YouCompleteMe и решил окончательно прибраться на coc.vim + coc-clangd.

Ранее я уже делал попытки использовать coc.vim в связке с ccls, но каждый раз откатывался на монструозный, но привычный YCM. Из плюсов ccls можно выделить удобство настройки проекта через файл .ccls, из минусов некоторую глюкавость. Допускаю, что не малую роль в этом играет сам плагин coc.vim.

Способ установки и настройки этой связки достаточно прост. Проверил работоспособность на двух системах с разными архитектурами – Linux x86_64, macOS x86_64, macOS m1. В первых двух случаях использовал автоматическую установку clangd из-под coc-clangd, в последнем случае установил llvm с помощью brew.

$ mkdir build
$ cd build
$ cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=1

Плюсы

  • На первый взгляд навигация по коду работает лучше.
  • Переименование можно делать в автоматическом режиме. Возможно, что я даже стану пользоваться этой функциональностью.
  • Появилась возможность отобразить попап с информацией по символам. Реально удобно.
  • Отказался от плагина a.vim, который использовал для переключения между h<->c, h<->cpp, h<->m, h<->mm.

Минусы

  • Теперь в систему пришлось затянуть nodejs. Это не так страшно, как тянуть в систему Python, с версионностью которого я заколебал бороться под macOS.
  • Плагин требует создания compile_commands.json. Пока делаю это врукопашную, но думаю перейти на автоматическое обновление дерева файлов.

Как бонус, не относящийся к смене плагинов, почистил конфиг vim и разделил его на части. Теперь специфичные для плагина настройки хранятся в отдельном файле. Стало проще управлять и подключать нужное по необходимости.