2010-08-11 13 views
8

Jak włączyć automatyczne uzupełnianie w Vimie?Automatyczne uzupełnianie Vim C++

Próbowałem to zrobić, ale nie jestem biegły w pliku vimrc itp., Więc nie wyszło. Czy możesz dać mi instrukcje krok po kroku, jak to zrobić?


Edit

Próbowałem instalacji OmniCppComplete. Przestrzegać instrukcji, ale gdy próbuję go pojawia się następujący błąd użyć:

Error detected while processing function omni#cpp#complete#Main..24_InitComplete:

line 24:

E10: \ should be followed by /, ? or &

+1

Czy sprawdziłeś http://vim.wikia.com/wiki/C%2B%2B_code_completion? – tkalve

+0

Jeśli potrzebujesz go tylko wewnątrz pliku, możesz użyć skrótu ctrl + p do przewijania w tył, a ctrl + n do przeszukania do przodu. Ale żeby przeszukać pliki, naprawdę nie wiem. Mam jednak nadzieję, że ktoś inny. Działa to tylko dla vima 7! – martiert

Odpowiedz

4

Szczegółowe instrukcje Auto complete (archive.org) Wpisz kilka pierwszych znaków i naciśnij Ctrl-> P (dla wstecznej wyszukiwania) lub Ctrl> N (dla wyszukiwania do przodu), listę wszystkich dostępnych opcji lub ją uzupełnia.

Używam vim7.2 (automatyczne uzupełnianie zostało wprowadzone w vim7) i te kontrolki działają dobrze.

+0

Czy to działa dla dołączonych plików? –

+2

Tak, w vim7, nie jestem pewien, czy jest dostępny w starszych wersjach. – DumbCoder

+0

Myślę, że to działa tylko poprzez skanowanie innych słów używanych w bieżącym pliku lub pliku słownika, który określasz. W Vimie wpisz ": help compl-generic", aby uzyskać szczegółowe informacje na temat tego, jak to działa, i jego ograniczeń. – NeilDurant

4

Vim domyślnie wykona zakończenie na podstawie słów w pliku, używając Ctrl-N lub Ctrl-P, co jest przydatne w przypadku ostatnio przywoływanych zmiennych lokalnych itp. I działa dla kodu w dowolnym języku, a nawet zwykłym tekście (przydatny do wypełnienia) trudne do przeliterowania nazwy). Nie robi tego jednak semantycznie ani w odniesieniu do rzeczywistych typów, które są dozwolone w danym kontekście, w którym piszesz. W tym celu trzeba będzie install ctags, a następnie w/usr/include typu:

ctags -f ~/.vim/stdtags -R --c++-kinds=+p --fields=+iaS --extra=+q . 

a następnie dodać to do Twojego .vimrc:

set nocp 
filetype plugin on 
map <C-L> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> 

set tags=~/.vim/stdtags,tags,.tags,../tags 

autocmd InsertLeave * if pumvisible() == 0|pclose|endif 

To będzie również Ctrl-L tagów przeładować, i tym samym pobrać nowe znaczniki autouzupełniania z bieżącego katalogu.

+0

Co robi ctags? Czy możesz wyjaśnić, co zrobiły polecenia? Czy to działa tylko dla lokalnych rzeczy? Potrzebuję tego do pracy w dużym projekcie. –

+2

Czy to też będzie autouzupełnianie z dołączonych plików nagłówkowych? – martiert

+1

Ctags indeksuje napisany kod i przechowuje informacje semantyczne o nim, które następnie mogą być zapytane o rzeczy takie jak znajdowanie słów, lokalizowanie funkcji/zmiennych itp. "set nocp" pobiera vim z trybu "kompatybilnego", który jest wymagany dla następujących poleceń. "filetype plugin on" umożliwia vimowi wykonywanie operacji na podstawie typu pliku (np. C++). Linia "map ..." ustawia mapowanie klawiszy dla Ctrl-L w celu wywołania ctags w celu zaktualizowania indeksu. "Ustawiaj tagi = ..."linia definiuje, gdzie przechowywane są informacje o znacznikach, które są standardowymi miejscami.Linia" autocmd "odrzuca okno zakończenia. – NeilDurant

2

Moim ulubionym jest clang_complete here. Jest bardzo łatwy w instalacji, a domyślna konfiguracja w dokumencie ReadMe działa dobrze. Nie musisz generować znaczników, To automatycznie pokazuje pełne opcje, gdy są dostępne. Może również podświetlić błędy składni .

Powiązane problemy