Niektóre edytory (takie jak Visual Studio w systemie Windows) wykonują autouzupełnianie w C ++, które rozumieją C ++. Na przykład biorąc pod uwagę:
#include <vector>
int main(void) {
std::vector<int> v;
v.i
W studiu wizualnym automatyczne uzupełnianie zna jedyną metodę, std::vector<int>
która zaczyna się od „i” insert
.
Czy możliwe jest uzyskanie tego rodzaju autouzupełniania w vimie?
ide
autocompletion
filetype-c++
Chris Jefferson
źródło
źródło
cd
przeszedłem do katalogu wtyczek YCM (~/.vim/bundle
dla mnie) i uruchomiłem./install --clang-completer
.Odpowiedzi:
Naprawdę podoba mi się clang_complete . Wymaga clang i musisz powiedzieć mu, gdzie znajduje się libclang w twoim systemie. Potem działa cudownie.
Ludzie mogą sugerować YouCompleteMe, ale szczerze mówiąc, ta wtyczka jest bardzo rozdęta za to, co mówi, i że wymaga dużo zbyt wielu kroków, aby zainstalować. Wielokrotnie miałem go również segfaultować Vima. Nie mogę być szczęśliwszy z clang_complete.
Oto, co otrzymuję, gdy piszę
v.
:źródło
return 0
pod tym menu podręcznym.Wtyczka YouCompleteMe ( Link ) działa dla mnie świetnie. Używa libclang do generowania funkcji autouzupełniania, zapewniającej dokładne zakończenie.
Ma wiele możliwości dostosowywania, szczególnie podczas pracy z flagami kompilacji. Możesz edytować „generator flag”, edytując skrypt Pythona dla każdego projektu ( przykład ). Ale dla mnie główną zaletą jest to, że obsługuje bazę danych kompilacji Clang ( Link! ). Oznacza to, że możesz skompilować kod normalnie i poprosić clang o wyplucie wszystkich flag użytych do kompilacji i użycia tych flag z YouCompleteMe. Jest to bardzo przydatne, jeśli chcesz, aby narzędzie do autouzupełniania wiedziało o twoich definicjach makr lub lokalizacji wszystkich plików nagłówków w systemie bez żadnego wysiłku, aby wpisywać je ręcznie.
źródło
YouCompleteMe nie jest trudny do zainstalowania i był dla mnie dość stabilny, migrowałem z clang_complete do YouCompleteMe lata temu. Zgadzam się z jedną rzeczą, jest ona naprawdę nadęta ogromną historią zatwierdzania, wieloma wewnętrznymi zależnościami i wsparciem dla wielu języków, którymi możesz się nie przejmować, ale nadal będzie klonować powiązane z nim podmoduły. To jest problem z YouComplemeMe, ale… to działa.
Ja pracowałem na widelec ze szczególnym celu, aby lepiej wspierać C ++, można sprawdzić to gif pokazując go:
https://s3.amazonaws.com/f.cl.ly/items/1e2F0A123h331c1G0L0R/SadBart.gif
Wykorzystuje informacje o nowych parametrach, które Clang jest w stanie podać, możesz dowiedzieć się więcej na ten temat z mojego artykułu: http://nosubstance.me/articles/2015-01-29-better-completion-for-cpp/ .
źródło