Wiele IDE automatycznie uzupełnia nazwy funkcji, zmienne, nazwy metod itp. jako typ użytkownika. Najlepsze z nich uzupełniają nazwy zarówno na podstawie wbudowanej biblioteki języka, jak i tego, co zostało już zdefiniowane w innych plikach tego samego programu.
Na przykład, kiedy piszę Program w Pythonie:
hungy = True def eatFood(food): pass if hungry: eatF
wiersz eatF
automatycznie pokazywał eatFood()
jako dostępna opcja autouzupełniania.
Czy Vim ma taką możliwość? Jeśli tak, jak mogę to włączyć?
Odpowiedź
W vimie jest wiele różnych odmian autouzupełniania. Jednym ze sposobów może być użycie SuperTab . Zapewnia to sposób używania uzupełniania tabulatorami mniej więcej w dowolnym momencie. Umożliwiłoby to naciśnięcie klawisza Tab po częściowym wpisaniu słowa w celu uzyskania listy uzupełnień. Na przykład wpisanie eatF
, a następnie Tab , aby rozwinąć do eatFood.
Uwaga : wszystkie te zdjęcia odsyłają do przykładowych gifów w akcji.
Vim ma doskonałe inne opcje. Przeczytaj :h ins-completion
, aby zobaczyć różnorodność wbudowanych opcji uzupełniania. Używanie vim „s Ctrl–X Ctrl – O w połączeniu z wtyczka obsługująca język Python, taka jak jedi , może nadać uzupełnienie. Jedi można skonfigurować tak, aby udostępniał dokumentację o uzupełnianiu omni (to robi Ctrl–X Ctrl – O ). Następnie dokumentacja dla kandydatów do ukończenia pojawiłaby się w podzielonym oknie.
Używanie podobnych wtyczek, ale różne opcje prowadzą do różnego rodzaju zachowań. Możliwe jest na przykład, że nie trzeba będzie pytać o autouzupełnianie (jeśli właśnie tego oczekujesz). Zamiast tego po wpisaniu pewnej liczby liter (powiedzmy 2 lub 3) słowa, wtyczka może spróbuj inteligentnie zaoferować możliwe uzupełnienia w menu.
Krótka odpowiedź brzmi: tak! Ale proces konfiguracji może być nieco skomplikowany. Myślę o tym jako o kroku na długiej drodze do opanowania vima.
Komentarze
- ' wypróbowałem je wszystkie i zawsze wracam do SuperTab, jest to ' najmniej uciążliwe.
- Bardzo podoba mi się również wtyczka YouCompleteMe, ponieważ sugeruje ona w trakcie pisania i możesz wybrać lub zignorować sugestie. Tak, wizualnie trudno to zignorować, ale jest bardzo dyskretna w moim przepływie pracy, wymagane Zmniejsz liczbę naciśnięć klawiszy.
- Ja ' zmieniłem animacje na ” po kliknięciu „, w tym sensie, że są one połączone z animacjami gif.
- Nie mogę ' korzystać z YouCompleteMe na moim komputerze w pracy, ponieważ nie ' nie mam roota do zainstalowania zależności, SuperTab jest zdecydowanie najlepszym wyborem.
- @mixedmath W moim przypadku superTab nie ' t działa.
Odpowiedź
Taka funkcjonalność – tj. przeszukiwanie bieżącego pliku ( i wszystkich otwartych plików) dla automatycznego uzupełniania, powinno być domyślnie włączone z Ctrl+P
:
Możesz przejść do n sugestii rozszerzenia za pomocą Ctrl+N
, p rewelacyjna sugestia z Ctrl+P
i wybierz go, wpisując dowolną literę (która zostanie dodana zaraz po sugestii).
Komentarze
Odpowiedź
Vim obsługuje uzupełnianie natywnie . Możesz przeczytać o różnych różnych uzupełnieniach, które Vim obsługuje w :h ins-completion
.
Ogólnie, do wszystkich celów, które znalazłem, wystarczające są uzupełnienia według moich upodobań jednak istnieją pewne wtyczki uzupełniania, które dodają więcej wartości niż to, co oferuje wstawianie uzupełnień. NeoComplete , YCM (YouCompleteMe) to kilka za to samo. Są bardziej zaawansowani w tym sensie, że starają się dokładniej łączyć różne typy uzupełnień, a także mają zaawansowane mechanizmy buforowania, dzięki czemu są szybsze. YCM współpracuje nawet z zewnętrznymi kompilatorami / narzędziami, aby zapewnić lepszą technologię IntelliSense.
Odpowiedź
Tak, skrypty automatycznego uzupełniania dla vim istnieje. „Najlepszy” wybór zależy od języka programowania. Jako przykładowy kod to Python, proponuję przyjrzeć się Jedi . Oprócz tego istnieje You complete me , który obsługuje również inne języki, ale czasami jest postrzegany jako zbyt duży. W przypadku innych języków możesz przeglądać długi zestaw skryptów vima .
Odpowiedź
W trybie wstawiania wpisz kilka pierwszych znaków słowa, a następnie naciśnij:
Ctrl-N to insert the next matching word; or Ctrl-P to insert the previous matching word.
Jest to szczególnie przydatne przy wpisywaniu nazwy zmiennych w programie.
Opcja „Complete” kontroluje, gdzie wyszukiwane są słowa kluczowe (pliki włączające, pliki znaczników, bufory i inne).
Opcja „completeeopt” steruje sposobem zakończenia (na przykład wyświetlaniem menu).
^P
jest bardziej naturalnym IMHO. W przeciwnym razie dzięki za edycję (mam nadzieję, że kliknąłem właściwy przycisk i dostałeś +2).world,word,wood
, a nie na odwrót).Tak więc^P
jest ostatnim używanym uzupełnieniem, co jest bardzo przydatne (rzadko sięgam dalej niż 3 pozycje na liście, nawet w długim pliku).inoremap <C-Space> <C-N>