Я достаточно долгое время пытаюсь найти удобную для себя среду разработки для С++.
Требования к ней следующие:
— Целевая ОС — Ubuntu
— Редактор текста должен быть Vim
— Должна понимать достаточно сложные С++11 конструкции (лямбды, enum class, auto, constexpr ...)
— Если я нажимаю точку, или ищу что-то, задержка должна быть не заметна для глаза.
— Встроенный отладчик очень желателен
Что я пробовал: Qt Creator с включенным FakeVim.
Этим я пользуюсь сейчас. Не нравится:
1. FakeVim очень слабенький, поправить в нем несколько строк можно, писать большое полотно кода сложно, потому что очень много комбинаций клавиш не работает. Нет EasyMotion
2. Некоторые C++11 вещи он пока не понимает
Нравится:
1. Очень быстрый поиск символов и автодополнение
2. Весьма удобная встроенная отладка
CDT + Eclim
Не нравится: поиск символов в эклипсе очень медленный — при нажатии на точку (даже без eclim) задерка в пол секунды.
Нравится: встроенная отладка
CTags
Не нравится:
1. Парсер по ощущениям сильно отстает и от Эклипса и от Qt Creator.
2. Отлаживать надо переключаться в Qt Creator, или использовать плагины для vim, подцепляющие GDB — к ним тоже есть претензии.
clang_complete и сопутствующие форки
Не нравится:
1. При нажатии на точку задержка до нескольких секунд
2. Если код не компилируется clang++, автодополнение не работает. Я использую gcc как основной компилятор, и постоянно поддерживать код компилируемым clang++ болезненно (в clang++ пока не все гладко с constexpr). Если сломать кусок кода, то автодополнение ломается. Иногда удобнее все разнести сначала, а потом медленно править — с clang_complete такой сценарий не работает.
3. Про отладку все как и с ctags
Самое простое решение, которое сейчас нарисовывается — это допилить FakeVim самому. Но прежде чем писать код, хочется узнать, что используют другие С++ разработчики, привыкшие к Vim. Может есть какая-то другая красивая среда разработки/плаигн к Vim, или я не правильно использую какой-то из перечисленных выше способов?
> При нажатии на точку задержка до нескольких секунд
Вы используете libclang режим clang_complete? В этом случае используются reparse*() API, которые автоматически строят PCH в памяти и репарсят только ваш код, а не все подключенные заголовки.
> в clang++ пока не все гладко с constexpr
Вы используете clang из SVN?
Я использовал последнюю на то время версию clang++, которая была на сайте. Сейчас обновил ее до самой свежей с сайта, и проблемы с constexpr разрешились. Но задержка в пол секунды все равно есть, хотя режим — libclang.
Используйте самый последний clang из SVN. Clang очень быстро развивается, и кроме того, с момента релиза 3.1 многое изменилось.
По вопросу скорости — кажется у vim есть проблемы с обработкой длинного списка комплишенов… Сделал тест с 50000 результатами и задержка намного больше 2 секунд, хотя парсинг в холодном режиме (без PCH) занимает всего 0.4 секунды.
Установил KDevelop 4.4.0 beta. Из плюсов:
1. однозначно очень хорошая поддержка C++11. Внутри лямбд работает автодополнение, понимает enum class.
2. встроенный отладчик — я погулял по коду в дебаггере — неплохая скорость работы, быстрый доступ к консоли gdb.
3. подсветка и автодополнение действительно на высоте — субъективно лучше чем в Qt Creator.
Из минусов:
1. Поддельный vim даже слабее, чем в Qt Creator, самое неприятное — он не поддерживает нормальный поиск (после поиска n не работает). Поиск в Vim очень важен.
2. Среда немного тяжеловата. Если на фоне запущено что-то тяжелое, она начинает немного тупить. Qt Creator в этом плане по легче.