Некоторые редакторы (например, Visual Studio на Windows) делают автозавершение C ++, которое понимает C ++. Например, учитывая:
#include <vector>
int main(void) {
std::vector<int> v;
v.i
В визуальной студии автозаполнение знает единственный метод, std::vector<int>
который начинается с i insert
.
Возможно ли получить такое автозаполнение в vim?
ide
autocompletion
filetype-c++
Крис Джефферсон
источник
источник
cd
перешел в каталог плагинов YCM (~/.vim/bundle
для меня) и побежал./install --clang-completer
.Ответы:
Мне действительно нравится clang_complete для этого. Для этого требуется clang, и вы должны указать ему, где находится libclang в вашей системе. После этого все работает чудесно.
Люди могут предложить YouCompleteMe, но, честно говоря, этот плагин сильно раздут для того, что он говорит, и требует слишком много шагов для установки. У меня также был Segfault Vim несколько раз. Я не мог быть счастливее с clang_complete.
Вот что я получаю, когда набираю
v.
:источник
return 0
под этим всплывающим меню.Плагин YouCompleteMe ( Link ) отлично работает для меня. Он использует libclang для генерации функции автозаполнения, обеспечивающей точное завершение.
Он имеет много настроек, особенно при работе с флагами компиляции. Вы можете редактировать «генератор флагов», редактируя скрипт Python для каждого проекта ( пример ). Но для меня главным преимуществом является то, что он поддерживает Clang Compilation Database ( Ссылка! ). Это означает, что вы можете нормально скомпилировать свой код и попросить clang указать все флаги, которые он использовал для компиляции, и использовать эти флаги с YouCompleteMe. Это очень удобно, если вы хотите, чтобы ваш инструмент автозаполнения знал о ваших определениях макросов или о расположении всех файлов заголовков в вашей системе без необходимости набирать его вручную.
источник
YouCompleteMe не так сложно установить, и он был достаточно стабильным для меня, я перешел с clang_complete на YouCompleteMe несколько лет назад. Я согласен с одной вещью: он действительно раздут с огромной историей коммитов, множеством внутренних зависимостей и поддержкой многих языков, которые могут вас не волновать, но все равно в конечном итоге будут клонированы связанные с ними подмодули. Это проблема с YouComplemeMe, все же ... она работает.
Я работал над форком со специальной целью, чтобы лучше поддерживать C ++, вы можете посмотреть этот gif:
https://s3.amazonaws.com/f.cl.ly/items/1e2F0A123h331c1G0L0R/SadBart.gif
Он использует новую информацию о параметрах, которую может предоставить Clang, вы можете узнать больше об этом из моей моей статьи: http://nosubstance.me/articles/2015-01-29-better-completion-for-cpp/ .
источник