Autouzupełnianie w Vimie

Krótko mówiąc, szukampracujący funkcja autouzupełniania dla edytora Vima. Jaargumentowałem wcześniej że Vim całkowicie zastępuje IDE pod Linuksem i na pewno jest to prawda, brakuje mu jednej ważnej funkcji: autouzupełniania.

wiem oCtrl+N, Integracja Exuberant Ctags, Taglist, cppcomplete iOmniCppComplete. Niestety, żaden z nich nie pasuje do mojego opisu „działającego autouzupełniania:”

Ctrl+N działa ładnie (tylko), jeśli zapomniałeś jak przeliterowaćclasslubwhile. No cóż.Ctags daje podstawy, ale ma wiele wad.Taglist jest po prostu opakowaniem Ctagsa i jako taki dziedziczy większość jego wad (chociaż działa dobrze dlawymienianie kolejno deklaracje).cppcomplete po prostu nie działa zgodnie z obietnicą i nie mogę zrozumieć, co zrobiłem źle, czy też „działa” poprawnie, a ograniczenia wynikają z projektu.OmniCppComplete wydaje się mieć te same problemy co cppcomplete, tj. automatyczne uzupełnianie nie działa poprawnie. Dodatkowotags plik należy ponownie zaktualizować ręcznie.

Jestem świadomy faktu, że nawet nowoczesne, w pełni rozwinięte IDE nie oferują dobrego uzupełnienia kodu C ++. Dlatego do tej pory zaakceptowałem brak Vima w tej dziedzinie. Ale myślę, że podstawowy poziom uzupełnienia kodu nie jest zbyt duży, by go zapytać i jest w rzeczywistości wymagany do produktywnego wykorzystania. Więc szukam czegoś, co może osiągnąć przynajmniej następujące rzeczy.

Świadomość składniowa. cppcomplete obiecuje (ale nie dostarcza mi), poprawne, zorientowane na zakres autouzupełnianie następujących elementów:

variableName.abc
variableName->abc
typeName::abc

I naprawdę wszystko inne jest całkowicie bezużyteczne.

Konfigurowalność. Muszę określić (łatwo), gdzie znajdują się pliki źródłowe, a stąd skąd skrypt pobiera informacje o autouzupełnianiu. W rzeczywistości mam plik Makefile w moim katalogu, który określa wymagane ścieżki dołączania. Eclipse potrafi zinterpretować zawarte w nim informacje, dlaczego nie skrypt Vima?

Aktualność. Jak tylko coś zmienię w moim pliku, chcę, aby autouzupełnianie to odzwierciedlało. ja robięnie chcesz ręcznie uruchomićctags (lub coś podobnego). Również zmiany powinny byćprzyrostowe, tj. kiedy zmieniłem tylko jeden plik, jest całkowiciegorszący dlactags aby ponownie przeanalizować całe drzewo katalogów (które może być ogromne).

Czy coś zapomniałem? Zapraszamy do aktualizacji.

Czuję się komfortowo z dużą ilością konfiguracji i / lub majsterkowania, ale nie chcę programować rozwiązania od zera i nie jestem dobry w debugowaniu skryptów Vima.

Ostatnia uwaga: naprawdę chciałbym coś podobnego dla Java i C #, ale myślę, że to zbyt wiele, aby mieć nadzieję:ctags analizuje tylko pliki kodu, a zarówno Java, jak i C # mają ogromne, wstępnie skompilowane struktury, które wymagają indeksowania. Niestety,rozwijanie .NET bez IDE jest jeszcze bardziej PITA niż C ++.

questionAnswers(7)

yourAnswerToTheQuestion