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.