Autouzupełnianie w Vimie

258

Po długim „treningu” w końcu przeszedłem na Vima; ale mam pewne problemy z autouzupełnianiem. Jak mogę uzyskać sugestię kodu podczas pisania?

Zwykle tworzę PHP, Ruby, HTML, C i CSS.

diegocstn
źródło

Odpowiedzi:

143

Możesz użyć wtyczki takiej jak AutoComplPop, aby uzyskać automatyczne uzupełnianie kodu podczas pisania.

Edycja 2015: Teraz osobiście korzystam z YouCompleteMe .

michaelmichael
źródło
10
Jest to wysoce zalecane. Bez wysiłku wpisuje CX CO, CP lub CN.
Amjith,
Próbowałem tego, ale wydaje się, że nie działa .. prawdopodobnie istnieje konflikt z innymi skryptami ..
diegocstn
1
czy umieszczasz pliki w określonych katalogach w ~ / .vim?
michaelmichael
1
@dieguitoweb ACP domyślnie nie działa z każdym rodzajem pliku. Musisz go „zhakować”, aby działał z JavaScript, ActionScript i PHP. Tutaj wyjaśniam, jak to robię. A oto kolejna wskazówka dla PHP.
romainl
teraz działa :) wszystkie pliki były już w odpowiednich katalogach .. Skrypt zastąpiłem tylko nowym plikiem do pobrania z repozytorium git i teraz jest w porządku.
wielkie
438

Użyj Ctrl-, Naby uzyskać listę sugestii słów w trybie wstawiania. Wpisz, :help i_CTRL-Naby zobaczyć dokumentację Vima na temat tej funkcjonalności.

Oto przykład importowania słownika Python do Vima.

Orbita
źródło
15
dzięki, to wspaniale, ale jak mogę mieć tę listę automatycznie, bez naciskania <ctrl + N>?
diegocstn
5
To właśnie powiedział ci Michaelael o wspomnianej wtyczce. Możesz także spojrzeć na SuperTab.
projecktzero
4
Aby uzyskać obsługę CSS, dodaj myślnik dla wbudowanego autouzupełniania, dodając „set iskeyword + = -” do twojego .vimrc
mahalie
3
Jest to najbardziej wszechstronny i natywny sposób :-)
Srikant
5
@ Hi-Angel, część „auto” polega na tym, że automatycznie określa opcje uzupełniania słowa i automatycznie konkuruje ze słowem po wybraniu opcji.
CJBS
26

Jeśli używasz VIM w wersji 8+, po prostu wpisz Ctrl + nlub Ctrl + p.

Ângelo Polotto
źródło
11

Możesz zacząć od wbudowanych omnifuncustawień.

Po prostu włóż:

filetype plugin on
au FileType php setl ofu=phpcomplete#CompletePHP
au FileType ruby,eruby setl ofu=rubycomplete#Complete
au FileType html,xhtml setl ofu=htmlcomplete#CompleteTags
au FileType c setl ofu=ccomplete#CompleteCpp
au FileType css setl ofu=csscomplete#CompleteCSS

na dole .vimrc, a następnie wpisz <Ctrl-X><Ctrl-O>w trybie wstawiania.

Zawsze polegam na tym zakończeniu CSS.

ernix
źródło
co setlznaczy Dzięki.
qed
Ok, rozumiem, to znaczy setlocal. Ale dlaczego potrzebujemy tutaj setlocal?
qed
Zobacz, jak cię denerwuje, gdy otwierasz inny plik w tym samym buforze.
ernix,
2
@ernix Z twojego linku: Bufor w Vimie jest ... otwartą instancją pliku ... Wiem o buforach, oknach i kartach; ale nie wiem o otwarciu innego pliku w tym samym buforze. Wydaje mi się, że kiedy otworzysz plik, zawsze otworzy się w nowym buforze i doda ten bufor do listy buforów. Wiem, że istnieją inne sposoby używania buforów, takie jak lista szybkich poprawek, ale nie wiedziałem o zmianie pliku znajdującego się w buforze. :h buffersmówi: Bufor to plik załadowany do pamięci w celu edycji. To powiedziawszy, poważnie używam Vima przez 3 miesiące. i z pewnością jestem otwarty na korekty.
JakeD,
1
@JakeD Ah tak. Masz rację. Podjąłem „instancję” w niewłaściwy sposób. Źle zrozumiałem, że mówiłeś o procesach z różnymi PID. Przepraszam, po prostu zapomnij o tym, co powiedziałem.
ernix,
6

Niedawno odkryłem projekt o nazwie OniVim , który jest elektronicznym frontonem dla NeoVim, który jest wyposażony w bardzo ładny autouzupełnianie dla kilku języków po wyjęciu z pudełka, a ponieważ jest to po prostu opakowanie wokół NeoVim, masz pełną moc vim do dyspozycji, jeśli GUI nie spełnia twoich potrzeb. Wciąż jest na wczesnym etapie rozwoju, ale szybko się poprawia i wokół jest naprawdę aktywna społeczność. Używam vima od ponad 10 lat i zacząłem dawać Oni testową jazdę kilka tygodni temu, i chociaż jest tu kilka błędów, nie przeszkodziło mi to. Zdecydowanie polecam go nowym użytkownikom vima, którzy wciąż dostają swoje palce vim!

wprowadź opis zdjęcia tutaj

OniVim: https://www.onivim.io/

Parker Ault
źródło
32
dla mnie cały punkt vima używa terminala ... gdybym chciał użyć aplikacji elektronowej, użyję vscode z rozszerzeniem vim ..
Mohamed Benkedadra
2
@MohamedBenkedadra Ale czy to naprawdę dałoby ci pełną moc Vima? Z jednej strony jestem wielkim fanem jego systemu wyszukiwania i zastępowania. Byłbym mile zaskoczony, gdyby wtyczka emulacji vim go wspierała.
SilverWolf - Przywróć Monikę
3

Używam neocomplcache przez około pół roku. Jest to wtyczka, która zbiera pamięć podręczną słów we wszystkich twoich buforach, a następnie udostępnia je do automatycznego uzupełniania.

Istnieje szereg zrzutów ekranu na stronie projektu w poprzednim łączu. Neocomplcache ma również mnóstwo opcji konfiguracyjnych, których podstawowe przykłady znajdują się również na stronie projektu.

Jeśli potrzebujesz więcej głębi, możesz spojrzeć na odpowiednią sekcję w moim vimrc - po prostu wyszukaj słowo neocomplcache.

sp3ctum
źródło
1

Oto link ! dla PHP.

naciśnij Ctrl + x, a następnie Ctrl + o klawisze podczas pisania niektórych funkcji PHP.

Dzięki Oseems Solutions za samouczek

Brian Kenya
źródło
1

Jeśli chcesz tylko autouzupełniania z pamięci podręcznej twoich buforów, supertab jest łatwiejszy do zainstalowania niż neokompletny , może działać na fabrycznie zainstalowanym vimie Maca od razu po wyjęciu z pudełka, bez potrzeby MacVima.

Możesz sprawdzić inne alternatywy w Vim Awesome .

tning
źródło
0

Dla PHP Padawan z Deoplete są świetnymi rozwiązaniami pozwalającymi na niezawodne autouzupełnianie PHP w Neovim. Próbowałem wielu rzeczy, a Padawan działa jak urok!

W przypadku Vima możesz użyć Neokompletu zamiast Deopletka.

Napisałem artykuł, jak stworzyć Vim PHP IDE, jeśli ktoś jest zainteresowany. Oczywiście Padawan jest tego częścią.

Matthieu
źródło
0

Inną opcją jest coc.nvim .

Jest naprawdę szybki, a jego ukończenie jest świetne, ponieważ wykorzystuje intellisense to samo automatyczne uzupełnianie, co VScode. Ma również właściwości szorowania. To pokazuje, że mogłeś mieć błąd. Obsługuje wiele języków.

Konfiguracja i konfiguracja może trochę potrwać, ale wydaje mi się, że jest to najlepszy silnik autouzupełniania dla vima.

ak17
źródło