Разработка на C във VIM
От доста време се опитвам да намеря удобна за мен среда за разработка на C++.
Неговите изисквания са както следва:
- Целева ОС - Ubuntu
- Текстовият редактор трябва да е Vim
— Трябва да разбира сравнително сложни C++11 конструкции (ламбда, enum клас, auto, constexpr.)
- Ако натисна точка или потърся нещо, забавянето не трябва да се забелязва за окото.
- Вграденият дебъгер е силно желателен
Какво опитах:Qt Creator с активиран FakeVim.
Това е, което използвам сега. Не харесвам:
1. FakeVim е много слаб, можете да коригирате няколко реда в него, трудно е да напишете голямо платно код, защото много клавишни комбинации не работят. Няма EasyMotion
2. Той все още не разбира някои неща от C++11
1. Много бързо търсене на знаци и автоматично довършване
2. Много удобно вградено отстраняване на грешки
Не ми харесва: търсенето на символи в eclipse е много бавно - когато щракнете върху точка (дори и без eclim), има забавяне от половин секунда.
Като: вградено отстраняване на грешки
1. Анализаторът изглежда далеч зад Eclipse и Qt Creator.
2. За отстраняване на грешки трябва да преминете към Qt Creator или да използвате vim плъгини, които закачат GDB - за тях също има оплаквания.
clang_complete и свързани разклонения
1. Когато щракнете върху точката, забавете до няколко секунди
2. Ако кодът не се компилира с clang++, автоматичното довършване не работи. Използвам gcc като основен компилатор и е болезнено да поддържам код, компилиран от clang++ през цялото време (clang++ все още не се справя толкова добре с constexpr). Ако разбиете част от кода, автоматичното довършване се прекъсва. Понякога е по-удобно първо да разбиете всичко и след това бавно да го редактирате - този сценарий не работи с clang_complete.
3.Всичко за отстраняването на грешки е същото като при ctags
Най-простото решение, което в момента се изготвя, е да завършите FakeVim сами. Но преди да напиша код, искам да знам какво използват други C++ разработчици, които са свикнали с Vim. Може би има друга красива среда за разработка/плъгин за Vim или използвам един от горните методи неправилно?