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.

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 .


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.


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


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.


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/


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.


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


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 .


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ą.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.