Устал от борьбы с 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 и разделил его на части. Теперь специфичные для плагина настройки хранятся в отдельном файле. Стало проще управлять и подключать нужное по необходимости.